From 44bf70fba26146d7e788ec051ee4ab45336de2fa Mon Sep 17 00:00:00 2001 From: Craig Mautner Date: Tue, 13 Mar 2012 11:38:38 -0700 Subject: [PATCH] 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 --- services/java/com/android/server/PowerManagerService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java index 63418db2cb335..52a411074da95 100644 --- a/services/java/com/android/server/PowerManagerService.java +++ b/services/java/com/android/server/PowerManagerService.java @@ -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 {