Index: ash/display/display_manager.cc |
diff --git a/ash/display/display_manager.cc b/ash/display/display_manager.cc |
index 92c0f59f5966f78a81f058e788c52ed392615ba0..0746d163bbead7936f81f5075b2a8538fe98dc81 100644 |
--- a/ash/display/display_manager.cc |
+++ b/ash/display/display_manager.cc |
@@ -140,9 +140,6 @@ DisplayManager::DisplayManager() |
if (base::SysInfo::IsRunningOnChromeOS()) |
DisplayInfo::SetUse125DSFForUIScaling(true); |
- if (switches::UnifiedDesktopEnabled()) |
- default_multi_display_mode_ = UNIFIED; |
- |
change_display_upon_host_resize_ = !base::SysInfo::IsRunningOnChromeOS(); |
#endif |
gfx::Screen::SetScreenInstance(gfx::SCREEN_TYPE_ALTERNATE, screen_.get()); |
@@ -641,6 +638,8 @@ void DisplayManager::OnNativeDisplaysChanged( |
if (gfx::Display::HasInternalDisplay() && !internal_display_connected && |
display_info_.find(gfx::Display::InternalDisplayId()) == |
display_info_.end()) { |
+ // Create a dummy internal display if the chrome restarted |
+ // in docked mode. |
DisplayInfo internal_display_info( |
gfx::Display::InternalDisplayId(), |
l10n_util::GetStringUTF8(IDS_ASH_INTERNAL_DISPLAY_NAME), |
@@ -648,6 +647,22 @@ void DisplayManager::OnNativeDisplaysChanged( |
internal_display_info.SetBounds(gfx::Rect(0, 0, 800, 600)); |
display_info_[gfx::Display::InternalDisplayId()] = internal_display_info; |
} |
+ |
+ if (new_display_info_list.size() > 1) { |
+ std::sort(new_display_info_list.begin(), new_display_info_list.end(), |
+ DisplayInfoSortFunctor()); |
+ DisplayIdPair pair = std::make_pair(new_display_info_list[0].id(), |
+ new_display_info_list[1].id()); |
+ DisplayLayout layout = layout_store_->GetRegisteredDisplayLayout(pair); |
+ default_multi_display_mode_ = layout.default_unified ? UNIFIED : EXTENDED; |
Jun Mukai
2015/05/21 09:38:12
(layout.default_unified && ash::switches::UnifiedD
oshima
2015/05/21 12:24:12
good point. Done. Also updated tests because tests
|
+#if defined(OS_CHROMEOS) |
+ // Mirror mode is set by DisplayConfigurator on the device. |
+ // Emulate it when running on linux desktop. |
+ if (!base::SysInfo::IsRunningOnChromeOS() && layout.mirrored) |
+ SetMultiDisplayMode(MIRRORING); |
+#endif |
+ } |
+ |
UpdateDisplays(new_display_info_list); |
} |