Set the reason for screen-off before usage.

An occasional call sequence through updateLightsLocked ended up storing
the old screen-off reason rather than the current screen-off reason.
This caused the Keyguard screen to be bypassed when turning back on. By
saving the power-off reason in mScreenOffReason prior to calling
updateLightsLocked we eliminate this problem.

The offending calling sequence was:
  PowerManagerService.setPowerState(..., reason) => updateLightsLocked
  => animateTo => screenOffFinishedAminatingLocked(mScreenOffReason)
  => sendNotificationLocked.

Change-Id: I8ee0b3226f94af7ff7e7b7b0bf54e47fd0c03631
This commit is contained in:
Craig Mautner
2012-03-13 11:38:38 -07:00
parent 5d1907b2f3
commit 44bf70fba2

View File

@ -1858,6 +1858,7 @@ public class PowerManagerService extends IPowerManager.Stub
} else {
// Update the lights *before* taking care of turning the
// screen off, so we can initiate any animations that are desired.
mScreenOffReason = reason;
if (stateChanged) {
updateLightsLocked(newState, 0);
}
@ -1876,7 +1877,6 @@ public class PowerManagerService extends IPowerManager.Stub
Binder.restoreCallingIdentity(identity);
}
mPowerState &= ~SCREEN_ON_BIT;
mScreenOffReason = reason;
if (!mScreenBrightnessAnimator.isAnimating()) {
err = screenOffFinishedAnimatingLocked(reason);
} else {