| Index: chromeos/display/output_configurator.cc
|
| diff --git a/chromeos/display/output_configurator.cc b/chromeos/display/output_configurator.cc
|
| index 3031b83bb4e09fac6276a34730deb477fc9c617d..5986d7bb60a714097ed52a2d8d4d184e6b383b61 100644
|
| --- a/chromeos/display/output_configurator.cc
|
| +++ b/chromeos/display/output_configurator.cc
|
| @@ -396,43 +396,6 @@ OutputState InferCurrentState(Display* display,
|
| return state;
|
| }
|
|
|
| -OutputState GetNextState(Display* display,
|
| - XRRScreenResources* screen,
|
| - OutputState current_state,
|
| - const std::vector<OutputSnapshot>& outputs) {
|
| - TRACE_EVENT0("chromeos", "OutputConfigurator::GetNextState");
|
| - OutputState state = STATE_INVALID;
|
| -
|
| - switch (outputs.size()) {
|
| - case 0:
|
| - state = STATE_HEADLESS;
|
| - break;
|
| - case 1:
|
| - state = STATE_SINGLE;
|
| - break;
|
| - case 2: {
|
| - bool mirror_supported = (0 != outputs[0].mirror_mode) &&
|
| - (0 != outputs[1].mirror_mode);
|
| - switch (current_state) {
|
| - case STATE_DUAL_EXTENDED:
|
| - state =
|
| - mirror_supported ? STATE_DUAL_MIRROR : STATE_DUAL_EXTENDED;
|
| - break;
|
| - case STATE_DUAL_MIRROR:
|
| - state = STATE_DUAL_EXTENDED;
|
| - break;
|
| - default:
|
| - // Default to extended mode.
|
| - state = STATE_DUAL_EXTENDED;
|
| - }
|
| - break;
|
| - }
|
| - default:
|
| - CHECK(false);
|
| - }
|
| - return state;
|
| -}
|
| -
|
| RRCrtc GetNextCrtcAfter(Display* display,
|
| XRRScreenResources* screen,
|
| RROutput output,
|
| @@ -533,7 +496,8 @@ bool IsOutputAspectPreservingScaling(Display* display,
|
| OutputConfigurator::OutputConfigurator()
|
| // If we aren't running on ChromeOS (like linux desktop),
|
| // don't try to configure display.
|
| - : configure_display_(base::chromeos::IsRunningOnChromeOS()),
|
| + : delegate_(NULL),
|
| + configure_display_(base::chromeos::IsRunningOnChromeOS()),
|
| is_panel_fitting_enabled_(false),
|
| connected_output_count_(0),
|
| xrandr_event_base_(0),
|
| @@ -1302,6 +1266,50 @@ void OutputConfigurator::RecordPreviousStateUMA() {
|
| last_enter_state_time_ = base::TimeTicks::Now();
|
| }
|
|
|
| +OutputState OutputConfigurator::GetNextState(
|
| + Display* display,
|
| + XRRScreenResources* screen,
|
| + OutputState current_state,
|
| + const std::vector<OutputSnapshot>& output_snapshots) const {
|
| + TRACE_EVENT0("chromeos", "OutputConfigurator::GetNextState");
|
| + OutputState state = STATE_INVALID;
|
| +
|
| + switch (output_snapshots.size()) {
|
| + case 0:
|
| + state = STATE_HEADLESS;
|
| + break;
|
| + case 1:
|
| + state = STATE_SINGLE;
|
| + break;
|
| + case 2: {
|
| + bool mirror_supported = (0 != output_snapshots[0].mirror_mode) &&
|
| + (0 != output_snapshots[1].mirror_mode);
|
| + switch (current_state) {
|
| + case STATE_DUAL_EXTENDED:
|
| + state =
|
| + mirror_supported ? STATE_DUAL_MIRROR : STATE_DUAL_EXTENDED;
|
| + break;
|
| + case STATE_DUAL_MIRROR:
|
| + state = STATE_DUAL_EXTENDED;
|
| + break;
|
| + case STATE_INVALID: {
|
| + std::vector<RROutput> outputs;
|
| + for (size_t i = 0; i < output_snapshots.size(); ++i)
|
| + outputs.push_back(output_snapshots[i].output);
|
| + state = delegate_->GetStateForOutputs(outputs);
|
| + break;
|
| + }
|
| + default:
|
| + state = STATE_DUAL_EXTENDED;
|
| + }
|
| + break;
|
| + }
|
| + default:
|
| + CHECK(false);
|
| + }
|
| + return state;
|
| +}
|
| +
|
| // static
|
| bool OutputConfigurator::IsInternalOutput(const XRROutputInfo* output_info) {
|
| return IsInternalOutputName(std::string(output_info->name));
|
|
|