summaryrefslogtreecommitdiffstats
path: root/ash/display
diff options
context:
space:
mode:
authorderat@chromium.org <derat@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-16 19:56:47 +0000
committerderat@chromium.org <derat@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-16 19:56:47 +0000
commit5d99ee6aabc1dc165374898d0fcd4d114e4e1698 (patch)
treef6dd48eb0397711a04300a62210eeb3e8be5046f /ash/display
parent1d07e92b5484360b2bbf8855c2ed29f5684c114c (diff)
downloadchromium_src-5d99ee6aabc1dc165374898d0fcd4d114e4e1698.zip
chromium_src-5d99ee6aabc1dc165374898d0fcd4d114e4e1698.tar.gz
chromium_src-5d99ee6aabc1dc165374898d0fcd4d114e4e1698.tar.bz2
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
Diffstat (limited to 'ash/display')
-rw-r--r--ash/display/display_change_observer_x11.cc9
-rw-r--r--ash/display/display_change_observer_x11.h4
-rw-r--r--ash/display/display_util_x11.cc2
-rw-r--r--ash/display/output_configurator_animation.cc3
-rw-r--r--ash/display/output_configurator_animation.h4
5 files changed, 16 insertions, 6 deletions
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<OutputConfigurator::OutputSnapshot>& outputs) {
+ // TODO(derat): Use |outputs| instead of re-fetching information.
XRRScreenResources* screen_resources =
XRRGetScreenResources(xdisplay_, x_root_window_);
std::map<XID, XRRCrtcInfo*> 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<chromeos::OutputConfigurator::OutputSnapshot>& 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<Resolution> 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<chromeos::OutputConfigurator::OutputSnapshot>& 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<chromeos::OutputConfigurator::OutputSnapshot>& outputs)
+ OVERRIDE;
virtual void OnDisplayModeChangeFailed(
chromeos::OutputState failed_new_state) OVERRIDE;