diff options
Diffstat (limited to 'services/core/java/com/android/server/policy/PhoneWindowManager.java')
-rw-r--r-- | services/core/java/com/android/server/policy/PhoneWindowManager.java | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index f064f83393c0..6e5421782261 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -2134,10 +2134,14 @@ public class PhoneWindowManager implements WindowManagerPolicy { } mWindowManagerInternal.registerAppTransitionListener(new AppTransitionListener() { + private boolean mOccludeChangingInTransition = false; + @Override public int onAppTransitionStartingLocked(boolean keyguardGoingAway, boolean keyguardOccluding, long duration, long statusBarAnimationStartTime, long statusBarAnimationDuration) { + mOccludeChangingInTransition = keyguardGoingAway || keyguardOccluding; + // When remote animation is enabled for KEYGUARD_GOING_AWAY transition, SysUI // receives IRemoteAnimationRunner#onAnimationStart to start animation, so we don't // need to call IKeyguardService#keyguardGoingAway here. @@ -2153,6 +2157,11 @@ public class PhoneWindowManager implements WindowManagerPolicy { 0 /* duration */); synchronized (mLock) { + if (mOccludeChangingInTransition) { + mKeyguardOccludedChanged = true; + mOccludeChangingInTransition = false; + } + applyKeyguardOcclusionChange(false); mLockAfterAppTransitionFinished = false; } } @@ -2160,12 +2169,16 @@ public class PhoneWindowManager implements WindowManagerPolicy { @Override public void onAppTransitionFinishedLocked(IBinder token) { synchronized (mLock) { + if (mOccludeChangingInTransition) { + mKeyguardOccludedChanged = true; + mOccludeChangingInTransition = false; + } + applyKeyguardOcclusionChange(false /* transitionStarted */); if (!mLockAfterAppTransitionFinished) { return; } mLockAfterAppTransitionFinished = false; } - lockNow(null); } }); @@ -3355,7 +3368,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (mKeyguardOccludedChanged) { if (DEBUG_KEYGUARD) Slog.d(TAG, "transition/occluded changed occluded=" + mPendingKeyguardOccluded); - if (setKeyguardOccludedLw(mPendingKeyguardOccluded, false /* force */, + if (setKeyguardOccludedLw(mPendingKeyguardOccluded, true /* force */, transitionStarted)) { return FINISH_LAYOUT_REDO_LAYOUT | FINISH_LAYOUT_REDO_WALLPAPER; } @@ -3616,6 +3629,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { private boolean setKeyguardOccludedLw(boolean isOccluded, boolean force, boolean transitionStarted) { if (DEBUG_KEYGUARD) Slog.d(TAG, "setKeyguardOccluded occluded=" + isOccluded); + mPendingKeyguardOccluded = isOccluded; mKeyguardOccludedChanged = false; if (isKeyguardOccluded() == isOccluded && !force) { return false; |