summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-13 09:54:28 +0000
committeroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-13 09:54:28 +0000
commit6dbcc2148cbb6acf9a6913f71e45b8bb2ed4c678 (patch)
treed802b839e0f7b5bc231c59f7a4a1ad691e371157
parente58eb5cfa2db649e8a068683161724bb45ca11a0 (diff)
downloadchromium_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.cc6
-rw-r--r--ash/display/display_change_observer_x11.h2
-rw-r--r--chromeos/display/output_configurator.cc14
-rw-r--r--chromeos/display/output_configurator.h17
-rw-r--r--chromeos/display/output_configurator_unittest.cc2
-rw-r--r--chromeos/display/real_output_configurator_delegate.cc1
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