| Index: ui/display/chromeos/display_configurator.cc
|
| diff --git a/ui/display/chromeos/display_configurator.cc b/ui/display/chromeos/display_configurator.cc
|
| index 91bb8863b99d5acf44738469b8eb76b6130983ca..72823c41d13726d6fc2294a9a6ff9f5baff8d473 100644
|
| --- a/ui/display/chromeos/display_configurator.cc
|
| +++ b/ui/display/chromeos/display_configurator.cc
|
| @@ -474,6 +474,7 @@ DisplayConfigurator::DisplayConfigurator()
|
| has_pending_power_state_(false),
|
| pending_power_flags_(kSetDisplayPowerNoFlags),
|
| force_configure_(false),
|
| + configure_cached_displays_(false),
|
| next_display_protection_client_id_(1),
|
| display_externally_controlled_(false),
|
| display_control_changing_(false),
|
| @@ -615,7 +616,7 @@ void DisplayConfigurator::ForceInitialConfigure(
|
| configuration_task_.reset(new UpdateDisplayConfigurationTask(
|
| native_display_delegate_.get(), layout_manager_.get(),
|
| requested_display_state_, requested_power_state_,
|
| - kSetDisplayPowerForceProbe, background_color_argb, true,
|
| + kSetDisplayPowerForceProbe, background_color_argb, true, false,
|
| base::Bind(&DisplayConfigurator::OnConfigured,
|
| weak_ptr_factory_.GetWeakPtr())));
|
| configuration_task_->Run();
|
| @@ -842,6 +843,7 @@ void DisplayConfigurator::PrepareForExit() {
|
| void DisplayConfigurator::SetDisplayPowerInternal(
|
| chromeos::DisplayPowerState power_state,
|
| int flags,
|
| + bool configure_cached_displays,
|
| const ConfigurationCallback& callback) {
|
| if (power_state == current_power_state_ &&
|
| !(flags & kSetDisplayPowerForceProbe)) {
|
| @@ -852,6 +854,7 @@ void DisplayConfigurator::SetDisplayPowerInternal(
|
| pending_power_state_ = power_state;
|
| has_pending_power_state_ = true;
|
| pending_power_flags_ = flags;
|
| + configure_cached_displays_ = configure_cached_displays;
|
| queued_configuration_callbacks_.push_back(callback);
|
|
|
| RunPendingConfiguration();
|
| @@ -872,7 +875,7 @@ void DisplayConfigurator::SetDisplayPower(
|
| << (configure_timer_.IsRunning() ? "Running" : "Stopped");
|
|
|
| requested_power_state_ = power_state;
|
| - SetDisplayPowerInternal(requested_power_state_, flags, callback);
|
| + SetDisplayPowerInternal(requested_power_state_, flags, false, callback);
|
| }
|
|
|
| void DisplayConfigurator::SetDisplayMode(MultipleDisplayState new_state) {
|
| @@ -951,7 +954,7 @@ void DisplayConfigurator::SuspendDisplays(
|
| // unless explicitly requested by lucid sleep code). Use
|
| // SetDisplayPowerInternal so requested_power_state_ is maintained.
|
| SetDisplayPowerInternal(chromeos::DISPLAY_POWER_ALL_OFF,
|
| - kSetDisplayPowerNoFlags, callback);
|
| + kSetDisplayPowerNoFlags, false, callback);
|
|
|
| // We need to make sure that the monitor configuration we just did actually
|
| // completes before we return.
|
| @@ -963,11 +966,12 @@ void DisplayConfigurator::ResumeDisplays() {
|
| return;
|
|
|
| displays_suspended_ = false;
|
| + configure_cached_displays_ = true;
|
|
|
| // If requested_power_state_ is ALL_OFF due to idle suspend, powerd will turn
|
| // the display power on when it enables the backlight.
|
| - SetDisplayPower(requested_power_state_, kSetDisplayPowerNoFlags,
|
| - base::Bind(&DoNothing));
|
| + SetDisplayPowerInternal(requested_power_state_, kSetDisplayPowerNoFlags, true,
|
| + base::Bind(&DoNothing));
|
| }
|
|
|
| void DisplayConfigurator::ConfigureDisplays() {
|
| @@ -994,14 +998,16 @@ void DisplayConfigurator::RunPendingConfiguration() {
|
| configuration_task_.reset(new UpdateDisplayConfigurationTask(
|
| native_display_delegate_.get(), layout_manager_.get(),
|
| requested_display_state_, pending_power_state_, pending_power_flags_,
|
| - 0, force_configure_, base::Bind(&DisplayConfigurator::OnConfigured,
|
| - weak_ptr_factory_.GetWeakPtr())));
|
| + 0, force_configure_, configure_cached_displays_,
|
| + base::Bind(&DisplayConfigurator::OnConfigured,
|
| + weak_ptr_factory_.GetWeakPtr())));
|
| configuration_task_->set_virtual_display_snapshots(
|
| virtual_display_snapshots_.get());
|
|
|
| // Reset the flags before running the task; otherwise it may end up scheduling
|
| // another configuration.
|
| force_configure_ = false;
|
| + configure_cached_displays_ = false;
|
| pending_power_flags_ = kSetDisplayPowerNoFlags;
|
| has_pending_power_state_ = false;
|
| requested_display_state_ = MULTIPLE_DISPLAY_STATE_INVALID;
|
|
|