| Index: chromeos/display/output_configurator.cc
|
| ===================================================================
|
| --- chromeos/display/output_configurator.cc (revision 164213)
|
| +++ chromeos/display/output_configurator.cc (working copy)
|
| @@ -682,9 +682,26 @@
|
| OutputSnapshot outputs[2] = { {0}, {0} };
|
| connected_output_count_ =
|
| GetDualOutputs(display, screen, &outputs[0], &outputs[1]);
|
| - output_state_ =
|
| - InferCurrentState(display, screen, outputs, connected_output_count_);
|
|
|
| + if (all_displays && power_on) {
|
| + // Resume all displays using the current state.
|
| + if (EnterState(display,
|
| + screen,
|
| + window,
|
| + output_state_,
|
| + outputs,
|
| + connected_output_count_)) {
|
| + // Force the DPMS on since the driver doesn't always detect that it should
|
| + // turn on.
|
| + CHECK(DPMSEnable(display));
|
| + CHECK(DPMSForceLevel(display, DPMSModeOn));
|
| +
|
| + XRRFreeScreenResources(screen);
|
| + XUngrabServer(display);
|
| + return true;
|
| + }
|
| + }
|
| +
|
| RRCrtc crtc = None;
|
| // Set the CRTCs based on whether we want to turn the power on or off and
|
| // select the outputs to operate on by name or all_displays.
|
| @@ -698,7 +715,7 @@
|
| mode = (STATE_DUAL_MIRROR == output_state_) ?
|
| outputs[i].mirror_mode : outputs[i].native_mode;
|
| } else if (connected_output_count_ > 1 && !all_displays &&
|
| - STATE_DUAL_MIRROR != output_state_ && outputs[i].is_internal) {
|
| + outputs[i].is_internal) {
|
| // Workaround for crbug.com/148365: leave internal display in native
|
| // mode so user can move cursor (and hence windows) onto internal
|
| // display even when dimmed
|
| @@ -706,8 +723,6 @@
|
| }
|
| crtc = GetNextCrtcAfter(display, screen, output, crtc);
|
|
|
| - // The values we are setting are already from the cache so no update
|
| - // required.
|
| ConfigureCrtc(display,
|
| screen,
|
| crtc,
|
|
|