Index: ui/display/chromeos/display_configurator.cc |
diff --git a/ui/display/chromeos/display_configurator.cc b/ui/display/chromeos/display_configurator.cc |
index eb1c0a4a8c4fe385b3dca2a83ed0493d7287216b..c12f4073e5d0a779fb1c24ea5d52de72bb98f982 100644 |
--- a/ui/display/chromeos/display_configurator.cc |
+++ b/ui/display/chromeos/display_configurator.cc |
@@ -844,7 +844,13 @@ void DisplayConfigurator::SetDisplayPowerInternal( |
chromeos::DisplayPowerState power_state, |
int flags, |
const ConfigurationCallback& callback) { |
+ // Only skip if the current power state is the same and the latest requested |
+ // power state is the same. If |pending_power_state_ != current_power_state_| |
+ // then there is a current task pending or the last configuration failed. In |
+ // either case request a new configuration to make sure the state is |
+ // consistent with the expectations. |
if (power_state == current_power_state_ && |
+ power_state == pending_power_state_ && |
!(flags & kSetDisplayPowerForceProbe)) { |
callback.Run(true); |
return; |