diff options
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java | 7 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowAnimator.java | 4 |
2 files changed, 9 insertions, 2 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java index 7f61fc1d29c6..009a0d629c94 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java @@ -253,6 +253,7 @@ public class KeyguardViewMediator extends SystemUI { private KeyguardUpdateMonitor mUpdateMonitor; private boolean mDeviceInteractive; + private boolean mGoingToSleep; // last known state of the cellular connection private String mPhoneState = TelephonyManager.EXTRA_STATE_IDLE; @@ -639,6 +640,7 @@ public class KeyguardViewMediator extends SystemUI { if (DEBUG) Log.d(TAG, "onStartedGoingToSleep(" + why + ")"); synchronized (this) { mDeviceInteractive = false; + mGoingToSleep = true; // Lock immediately based on setting if secure (user has a pin/pattern/password). // This also "locks" the device when not secure to provide easy access to the @@ -678,6 +680,7 @@ public class KeyguardViewMediator extends SystemUI { if (DEBUG) Log.d(TAG, "onFinishedGoingToSleep(" + why + ")"); synchronized (this) { mDeviceInteractive = false; + mGoingToSleep = false; resetKeyguardDonePendingLocked(); mHideAnimationRun = false; @@ -1239,6 +1242,10 @@ public class KeyguardViewMediator extends SystemUI { } mUpdateMonitor.clearFingerprintRecognized(); + if (mGoingToSleep) { + Log.i(TAG, "Device is going to sleep, aborting keyguardDone"); + return; + } if (mExitSecureCallback != null) { try { mExitSecureCallback.onKeyguardExitResult(authenticated); diff --git a/services/core/java/com/android/server/wm/WindowAnimator.java b/services/core/java/com/android/server/wm/WindowAnimator.java index 11eb57264eaa..76301781f4d6 100644 --- a/services/core/java/com/android/server/wm/WindowAnimator.java +++ b/services/core/java/com/android/server/wm/WindowAnimator.java @@ -349,6 +349,7 @@ public class WindowAnimator { "Now policy hidden: " + win); } else { boolean applyExistingExitAnimation = mPostKeyguardExitAnimation != null + && !mPostKeyguardExitAnimation.hasEnded() && !winAnimator.mKeyguardGoingAwayAnimation && win.hasDrawnLw() && win.mAttachedWindow == null @@ -499,8 +500,7 @@ public class WindowAnimator { mPostKeyguardExitAnimation.getStartOffset(), mPostKeyguardExitAnimation.getDuration()); mKeyguardGoingAway = false; - } else if (mCurrentTime - mPostKeyguardExitAnimation.getStartTime() - > mPostKeyguardExitAnimation.getDuration()) { + } else if (mPostKeyguardExitAnimation.hasEnded()) { // Done with the animation, reset. if (DEBUG_KEYGUARD) Slog.v(TAG, "Done with Keyguard exit animations."); mPostKeyguardExitAnimation = null; |