From 5d99ee6aabc1dc165374898d0fcd4d114e4e1698 Mon Sep 17 00:00:00 2001 From: "derat@chromium.org" Date: Fri, 16 Aug 2013 19:56:47 +0000 Subject: chromeos: Include mode details in OutputSnapshot. This updates OutputConfigurator to include modes' resolutions and interlaced-ness in OutputSnapshot structs, and to pass OutputSnapshots to observers after the display mode is changed. A following change will update ash's DisplayChangeObserverX11 class to use OutputSnapshots instead of asking the X server for the same information via XRandR. BUG=266113 Review URL: https://chromiumcodereview.appspot.com/22871010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@218069 0039d316-1c4b-4281-b951-d872f2087c98 --- ash/display/display_change_observer_x11.cc | 9 +++++++-- ash/display/display_change_observer_x11.h | 4 +++- ash/display/display_util_x11.cc | 2 +- ash/display/output_configurator_animation.cc | 3 ++- ash/display/output_configurator_animation.h | 4 +++- 5 files changed, 16 insertions(+), 6 deletions(-) (limited to 'ash/display') diff --git a/ash/display/display_change_observer_x11.cc b/ash/display/display_change_observer_x11.cc index 860a5ea..2802e6c 100644 --- a/ash/display/display_change_observer_x11.cc +++ b/ash/display/display_change_observer_x11.cc @@ -27,6 +27,9 @@ namespace ash { namespace internal { + +using chromeos::OutputConfigurator; + namespace { // The DPI threshold to detect high density screen. @@ -89,7 +92,9 @@ bool DisplayChangeObserverX11::GetResolutionForDisplayId(int64 display_id, return true; } -void DisplayChangeObserverX11::OnDisplayModeChanged() { +void DisplayChangeObserverX11::OnDisplayModeChanged( + const std::vector& outputs) { + // TODO(derat): Use |outputs| instead of re-fetching information. XRRScreenResources* screen_resources = XRRGetScreenResources(xdisplay_, x_root_window_); std::map crtc_info_map; @@ -131,7 +136,7 @@ void DisplayChangeObserverX11::OnDisplayModeChanged() { continue; } const XRRModeInfo* mode = - chromeos::FindModeInfo(screen_resources, crtc_info->mode); + chromeos::FindXRRModeInfo(screen_resources, crtc_info->mode); if (!mode) { LOG(WARNING) << "Could not find a mode for the output: output_index=" << output_index; diff --git a/ash/display/display_change_observer_x11.h b/ash/display/display_change_observer_x11.h index 6781151..33fafb3 100644 --- a/ash/display/display_change_observer_x11.h +++ b/ash/display/display_change_observer_x11.h @@ -36,7 +36,9 @@ class DisplayChangeObserverX11 int* height) const OVERRIDE; // Overriden from chromeos::OutputConfigurator::Observer: - virtual void OnDisplayModeChanged() OVERRIDE; + virtual void OnDisplayModeChanged( + const std::vector& outputs) + OVERRIDE; // Overriden from ShellObserver: virtual void OnAppTerminating() OVERRIDE; diff --git a/ash/display/display_util_x11.cc b/ash/display/display_util_x11.cc index e662ce2..984ed53 100644 --- a/ash/display/display_util_x11.cc +++ b/ash/display/display_util_x11.cc @@ -63,7 +63,7 @@ std::vector GetResolutionList( for (int i = 0; i < output_info->nmode; i++) { RRMode mode = output_info->modes[i]; - const XRRModeInfo* info = chromeos::FindModeInfo(screen_resources, mode); + const XRRModeInfo* info = chromeos::FindXRRModeInfo(screen_resources, mode); DCHECK(info); // Just ignore bad entry on Release build. if (!info) diff --git a/ash/display/output_configurator_animation.cc b/ash/display/output_configurator_animation.cc index 6161bef..5e58497 100644 --- a/ash/display/output_configurator_animation.cc +++ b/ash/display/output_configurator_animation.cc @@ -203,7 +203,8 @@ void OutputConfiguratorAnimation::StartFadeInAnimation() { } } -void OutputConfiguratorAnimation::OnDisplayModeChanged() { +void OutputConfiguratorAnimation::OnDisplayModeChanged( + const std::vector& outputs) { if (!hiding_layers_.empty()) StartFadeInAnimation(); } diff --git a/ash/display/output_configurator_animation.h b/ash/display/output_configurator_animation.h index 3fefe92..42a66ef 100644 --- a/ash/display/output_configurator_animation.h +++ b/ash/display/output_configurator_animation.h @@ -42,7 +42,9 @@ class ASH_EXPORT OutputConfiguratorAnimation protected: // chromeos::OutputConfigurator::Observer overrides: - virtual void OnDisplayModeChanged() OVERRIDE; + virtual void OnDisplayModeChanged( + const std::vector& outputs) + OVERRIDE; virtual void OnDisplayModeChangeFailed( chromeos::OutputState failed_new_state) OVERRIDE; -- cgit v1.1