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; |