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

Unified Diff: services/ui/display/platform_screen_ozone.cc

Issue 2461513002: Primary display change notifications. (Closed)
Patch Set: More fixes. Created 4 years, 2 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 | « services/ui/display/platform_screen_ozone.h ('k') | services/ui/display/platform_screen_ozone_unittests.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: services/ui/display/platform_screen_ozone.cc
diff --git a/services/ui/display/platform_screen_ozone.cc b/services/ui/display/platform_screen_ozone.cc
index 127fcd8f90ff2b9eb9f541e49c1b074d00587fb7..3a9433d18359257a14f0e81140c148a1920dd9c7 100644
--- a/services/ui/display/platform_screen_ozone.cc
+++ b/services/ui/display/platform_screen_ozone.cc
@@ -164,7 +164,7 @@ void PlatformScreenOzone::SwapPrimaryDisplay() {
primary_display_id_ = cached_displays_[primary_display_index + 1].id;
}
- // TODO(kylechar): Update ws::DisplayManager.
+ delegate_->OnPrimaryDisplayChanged(primary_display_id_);
}
void PlatformScreenOzone::SetDisplayWorkArea(int64_t display_id,
@@ -210,16 +210,6 @@ void PlatformScreenOzone::ProcessRemovedDisplays(
primary_display_id_ = Display::kInvalidDisplayID;
}
}
-
- // If the primary display was removed find a new primary display id.
- if (primary_display_id_ == Display::kInvalidDisplayID) {
- for (const DisplayInfo& display : cached_displays_) {
- if (!display.removed) {
- primary_display_id_ = display.id;
- break;
- }
- }
- }
}
void PlatformScreenOzone::ProcessModifiedDisplays(
@@ -279,10 +269,6 @@ void PlatformScreenOzone::AddNewDisplays(
if (GetCachedDisplayIterator(id) != cached_displays_.end())
continue;
- // If we have no primary display then this one should be it.
- if (primary_display_id_ == Display::kInvalidDisplayID)
- primary_display_id_ = id;
-
DisplayInfo display_info;
display_info.id = snapshot->display_id();
display_info.metrics = MetricsFromSnapshot(*snapshot, next_display_origin_);
@@ -299,6 +285,12 @@ void PlatformScreenOzone::AddNewDisplays(
cached_displays_.push_back(display_info);
delegate_->OnDisplayAdded(display_info.id, display_info.metrics);
+
+ // If we have no primary display then this one should be it.
+ if (primary_display_id_ == Display::kInvalidDisplayID) {
+ primary_display_id_ = id;
+ delegate_->OnPrimaryDisplayChanged(primary_display_id_);
+ }
}
}
@@ -333,8 +325,22 @@ void PlatformScreenOzone::OnDisplayModeChanged(
const ui::DisplayConfigurator::DisplayStateList& displays) {
ProcessRemovedDisplays(displays);
ProcessModifiedDisplays(displays);
+
+ // If the primary display is marked as removed we'll try to find a new primary
+ // display and update the delegate before removing the old primary display.
+ if (primary_display_id_ == Display::kInvalidDisplayID) {
+ for (const DisplayInfo& display : cached_displays_) {
+ if (!display.removed) {
+ primary_display_id_ = display.id;
+ delegate_->OnPrimaryDisplayChanged(primary_display_id_);
+ break;
+ }
+ }
+ }
+
UpdateCachedDisplays();
AddNewDisplays(displays);
+
wait_for_display_config_update_ = false;
}
« no previous file with comments | « services/ui/display/platform_screen_ozone.h ('k') | services/ui/display/platform_screen_ozone_unittests.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698