diff options
author | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-13 09:54:28 +0000 |
---|---|---|
committer | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-13 09:54:28 +0000 |
commit | 6dbcc2148cbb6acf9a6913f71e45b8bb2ed4c678 (patch) | |
tree | d802b839e0f7b5bc231c59f7a4a1ad691e371157 | |
parent | e58eb5cfa2db649e8a068683161724bb45ca11a0 (diff) | |
download | chromium_src-6dbcc2148cbb6acf9a6913f71e45b8bb2ed4c678.zip chromium_src-6dbcc2148cbb6acf9a6913f71e45b8bb2ed4c678.tar.gz chromium_src-6dbcc2148cbb6acf9a6913f71e45b8bb2ed4c678.tar.bz2 |
Use the correct output index to get state for outputs.
BUG=239412
TEST=manual. see bug for repro step.
Review URL: https://chromiumcodereview.appspot.com/14699004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@199695 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | ash/display/display_change_observer_x11.cc | 6 | ||||
-rw-r--r-- | ash/display/display_change_observer_x11.h | 2 | ||||
-rw-r--r-- | chromeos/display/output_configurator.cc | 14 | ||||
-rw-r--r-- | chromeos/display/output_configurator.h | 17 | ||||
-rw-r--r-- | chromeos/display/output_configurator_unittest.cc | 2 | ||||
-rw-r--r-- | chromeos/display/real_output_configurator_delegate.cc | 1 |
6 files changed, 18 insertions, 24 deletions
diff --git a/ash/display/display_change_observer_x11.cc b/ash/display/display_change_observer_x11.cc index 90047a1..cb405d2 100644 --- a/ash/display/display_change_observer_x11.cc +++ b/ash/display/display_change_observer_x11.cc @@ -132,11 +132,11 @@ DisplayChangeObserverX11::~DisplayChangeObserverX11() { } chromeos::OutputState DisplayChangeObserverX11::GetStateForOutputs( - const std::vector<chromeos::OutputInfo>& outputs) const { + const chromeos::OutputSnapshotList& outputs) const { CHECK(outputs.size() == 2); DisplayIdPair pair = std::make_pair( - GetDisplayId(outputs[0].output, outputs[0].output_index), - GetDisplayId(outputs[1].output, outputs[1].output_index)); + GetDisplayId(outputs[0].output, outputs[0].index), + GetDisplayId(outputs[1].output, outputs[1].index)); DisplayLayout layout = Shell::GetInstance()->display_controller()-> GetRegisteredDisplayLayout(pair); return layout.mirrored ? diff --git a/ash/display/display_change_observer_x11.h b/ash/display/display_change_observer_x11.h index 137137b..3bcf461 100644 --- a/ash/display/display_change_observer_x11.h +++ b/ash/display/display_change_observer_x11.h @@ -29,7 +29,7 @@ class DisplayChangeObserverX11 // chromeos::OutputConfigurator::StateController overrides: virtual chromeos::OutputState GetStateForOutputs( - const std::vector<chromeos::OutputInfo>& outputs) const OVERRIDE; + const chromeos::OutputSnapshotList& outputs) const OVERRIDE; // Overriden from chromeos::OutputConfigurator::Observer: virtual void OnDisplayModeChanged() OVERRIDE; diff --git a/chromeos/display/output_configurator.cc b/chromeos/display/output_configurator.cc index 903f49b..cca82e7 100644 --- a/chromeos/display/output_configurator.cc +++ b/chromeos/display/output_configurator.cc @@ -92,7 +92,8 @@ OutputConfigurator::OutputSnapshot::OutputSnapshot() height(0), is_internal(false), is_aspect_preserving_scaling(false), - touch_device_id(0) {} + touch_device_id(0), + index(0) {} OutputConfigurator::CoordinateTransformation::CoordinateTransformation() : x_scale(1.0), @@ -353,7 +354,8 @@ bool OutputConfigurator::EnterState( const std::vector<OutputSnapshot>& outputs) { std::vector<bool> output_power; int num_on_outputs = GetOutputPower(outputs, power_state, &output_power); - + VLOG(1) << "EnterState: output=" << output_state + << ", power=" << power_state; switch (output_state) { case STATE_HEADLESS: if (outputs.size() != 0) { @@ -510,13 +512,7 @@ OutputState OutputConfigurator::GetOutputState( } else { // With either both outputs on or both outputs off, use one of the // dual modes. - std::vector<OutputInfo> output_infos; - for (size_t i = 0; i < outputs.size(); ++i) { - output_infos.push_back(OutputInfo()); - output_infos[i].output = outputs[i].output; - output_infos[i].output_index = i; - } - return state_controller_->GetStateForOutputs(output_infos); + return state_controller_->GetStateForOutputs(outputs); } } default: diff --git a/chromeos/display/output_configurator.h b/chromeos/display/output_configurator.h index faef729..43060ac 100644 --- a/chromeos/display/output_configurator.h +++ b/chromeos/display/output_configurator.h @@ -35,15 +35,6 @@ enum OutputState { STATE_DUAL_EXTENDED, }; -// Information that is necessary to construct display id -// in |OutputConfigurator::Delegate|. -// TODO(oshima): Move xrandr related functions to here -// from ui/base/x and replace this with display id list. -struct OutputInfo { - RROutput output; - int output_index; -}; - // This class interacts directly with the underlying Xrandr API to manipulate // CTRCs and Outputs. class CHROMEOS_EXPORT OutputConfigurator : public MessageLoop::Dispatcher { @@ -70,6 +61,10 @@ class CHROMEOS_EXPORT OutputConfigurator : public MessageLoop::Dispatcher { // XInput device ID or 0 if this output isn't a touchscreen. int touch_device_id; + + // TODO(oshima): Move xrandr related functions to here + // from ui/base/x and replace this with display id. + int index; }; struct CoordinateTransformation { @@ -114,7 +109,7 @@ class CHROMEOS_EXPORT OutputConfigurator : public MessageLoop::Dispatcher { // Called when displays are detected. virtual OutputState GetStateForOutputs( - const std::vector<OutputInfo>& outputs) const = 0; + const std::vector<OutputSnapshot>& outputs) const = 0; }; // Interface for classes that perform actions on behalf of OutputController. @@ -354,6 +349,8 @@ class CHROMEOS_EXPORT OutputConfigurator : public MessageLoop::Dispatcher { DISALLOW_COPY_AND_ASSIGN(OutputConfigurator); }; +typedef std::vector<OutputConfigurator::OutputSnapshot> OutputSnapshotList; + } // namespace chromeos #endif // CHROMEOS_DISPLAY_OUTPUT_CONFIGURATOR_H_ diff --git a/chromeos/display/output_configurator_unittest.cc b/chromeos/display/output_configurator_unittest.cc index 0b2ee48..3d4fbfc 100644 --- a/chromeos/display/output_configurator_unittest.cc +++ b/chromeos/display/output_configurator_unittest.cc @@ -209,7 +209,7 @@ class TestStateController : public OutputConfigurator::StateController { // OutputConfigurator::StateController overrides: virtual OutputState GetStateForOutputs( - const std::vector<OutputInfo>& outputs) const OVERRIDE { return state_; } + const OutputSnapshotList& outputs) const OVERRIDE { return state_; } private: OutputState state_; diff --git a/chromeos/display/real_output_configurator_delegate.cc b/chromeos/display/real_output_configurator_delegate.cc index 4a6167c..531a46d 100644 --- a/chromeos/display/real_output_configurator_delegate.cc +++ b/chromeos/display/real_output_configurator_delegate.cc @@ -147,6 +147,7 @@ RealOutputConfiguratorDelegate::GetOutputs() { to_populate.is_aspect_preserving_scaling = IsOutputAspectPreservingScaling(this_id); to_populate.touch_device_id = None; + to_populate.index = i; VLOG(1) << "Found display #" << outputs.size() << " with output " << to_populate.output |