Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(776)

Unified Diff: ash/display/display_manager.cc

Issue 1263853002: Unified Desktop: Support 2xDSF display (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ash/display/display_manager.cc
diff --git a/ash/display/display_manager.cc b/ash/display/display_manager.cc
index 241f93c13adad4c334e6c7d07d82049453c26e43..a79a1f4c62188c8a2c198b268218a8368225951d 100644
--- a/ash/display/display_manager.cc
+++ b/ash/display/display_manager.cc
@@ -8,6 +8,7 @@
#include <cmath>
#include <set>
#include <string>
+#include <utility>
#include <vector>
#include "ash/ash_switches.h"
@@ -1114,11 +1115,17 @@ void DisplayManager::CreateSoftwareMirroringDisplayInfo(
// 1st Pass. Find the max size.
int max_height = std::numeric_limits<int>::min();
- for (auto& info : *display_info_list)
- max_height = std::max(max_height, info.size_in_pixel().height());
+ float default_device_scale_factor = 1.0f;
+
+ for (auto& info : *display_info_list) {
+ if (max_height < info.size_in_pixel().height()) {
+ max_height = info.size_in_pixel().height();
+ default_device_scale_factor = info.device_scale_factor();
Jun Mukai 2015/07/29 21:26:28 This means that if two displays are in the same he
oshima 2015/07/30 01:33:31 Per offline discussion, changed to use the 1st or
+ }
+ }
std::vector<DisplayMode> display_mode_list;
- std::set<float> scales;
+ std::set<std::pair<float, float>> dsf_scale_list;
// 2nd Pass. Compute the unified display size.
for (auto& info : *display_info_list) {
@@ -1131,14 +1138,17 @@ void DisplayManager::CreateSoftwareMirroringDisplayInfo(
info.id(), origin, 1.0f / scale);
unified_bounds.Union(display.bounds());
- scales.insert(scale);
+ dsf_scale_list.insert(
+ std::make_pair(info.device_scale_factor(), scale));
Jun Mukai 2015/07/29 21:26:28 Also, can we add a case of dsf=1.0 as an option?
oshima 2015/07/30 01:33:32 Let's wait for user's feedback. My guess is that u
}
DisplayInfo info(kUnifiedDisplayId, "Unified Desktop", false);
+ info.set_device_scale_factor(default_device_scale_factor);
info.SetBounds(unified_bounds);
DisplayMode native_mode(unified_bounds.size(), 60.0f, false, true);
- info.SetDisplayModes(CreateUnifiedDisplayModeList(native_mode, scales));
+ info.SetDisplayModes(
+ CreateUnifiedDisplayModeList(native_mode, dsf_scale_list));
// Forget the configured resolution if the original unified
// desktop resolution has changed.
@@ -1153,7 +1163,7 @@ void DisplayManager::CreateSoftwareMirroringDisplayInfo(
DisplayMode mode;
if (GetSelectedModeForDisplayId(kUnifiedDisplayId, &mode) &&
FindDisplayMode(info, mode) != info.display_modes().end()) {
- // TODO(oshima): device scale factor.
+ info.set_device_scale_factor(mode.device_scale_factor);
info.SetBounds(gfx::Rect(mode.size));
} else {
display_modes_.erase(kUnifiedDisplayId);

Powered by Google App Engine
This is Rietveld 408576698