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

Unified Diff: ash/display/display_manager.cc

Issue 559213002: Force calling PostDisplayConfigurationChange() even if earyling out in UpdateDisplays (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix unittests Created 6 years, 3 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
« no previous file with comments | « ash/display/display_controller_unittest.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/display/display_manager.cc
diff --git a/ash/display/display_manager.cc b/ash/display/display_manager.cc
index 29eced4cc03ec6eee89c4e70a04ad674edb7a05b..2769510dd38ef914067f2eb6972f91208d88f15c 100644
--- a/ash/display/display_manager.cc
+++ b/ash/display/display_manager.cc
@@ -884,13 +884,6 @@ void DisplayManager::UpdateDisplays(
scoped_ptr<NonDesktopDisplayUpdater> non_desktop_display_updater(
new NonDesktopDisplayUpdater(this, delegate_));
- // Do not update |displays_| if there's nothing to be updated. Without this,
- // it will not update the display layout, which causes the bug
- // http://crbug.com/155948.
- if (display_changes.empty() && added_display_indices.empty() &&
- removed_displays.empty()) {
- return;
- }
// Clear focus if the display has been removed, but don't clear focus if
// the destkop has been moved from one display to another
// (mirror -> docked, docked -> single internal).
@@ -900,6 +893,22 @@ void DisplayManager::UpdateDisplays(
if (delegate_)
delegate_->PreDisplayConfigurationChange(clear_focus);
+ // Do not update |displays_| if there's nothing to be updated. Without this,
+ // it will not update the display layout, which causes the bug
+ // http://crbug.com/155948.
+ if (display_changes.empty() && added_display_indices.empty() &&
+ removed_displays.empty()) {
+ // When changing from software mirroring mode to sinlge display mode, it
+ // is possible there is no need to update |displays_| and we early out
+ // here. But we still want to run the PostDisplayConfigurationChange()
+ // cause there are some clients need to act on this, e.g.
+ // TouchTransformerController needs to adjust the TouchTransformer when
+ // switching from dual displays to single display.
+ if (delegate_)
+ delegate_->PostDisplayConfigurationChange();
+ return;
+ }
+
size_t updated_index;
if (UpdateSecondaryDisplayBoundsForLayout(&new_displays, &updated_index) &&
std::find(added_display_indices.begin(),
« no previous file with comments | « ash/display/display_controller_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698