diff --git a/ash/display/display_controller_unittest.cc b/ash/display/display_controller_unittest.cc index 1499298c41651..cb2bcb2542c20 100644 --- a/ash/display/display_controller_unittest.cc +++ b/ash/display/display_controller_unittest.cc @@ -655,8 +655,7 @@ TEST_F(DisplayControllerTest, BoundsUpdated) { // No change UpdateDisplay("400x500*2,300x300"); - // We still call into Pre/PostDisplayConfigurationChange(). - EXPECT_EQ(1, observer.CountAndReset()); + EXPECT_EQ(0, observer.CountAndReset()); EXPECT_EQ(0, observer.GetFocusChangedCountAndReset()); EXPECT_EQ(0, observer.GetActivationChangedCountAndReset()); diff --git a/ash/display/display_manager.cc b/ash/display/display_manager.cc index 2769510dd38ef..29eced4cc03ec 100644 --- a/ash/display/display_manager.cc +++ b/ash/display/display_manager.cc @@ -884,6 +884,13 @@ void DisplayManager::UpdateDisplays( scoped_ptr 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). @@ -893,22 +900,6 @@ 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(),