summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java19
-rw-r--r--services/core/java/com/android/server/policy/PhoneWindowManager.java18
2 files changed, 19 insertions, 18 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
index d608abc3b008..58ed3aae233e 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
@@ -963,14 +963,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
mOccludeByDreamAnimator.cancel();
}
});
- // The value of isKeyguardOccluded here may come from mergeAnimation, which
- // isn't reliable. In all cases, after running or cancelling this animation,
- // keyguard should be occluded.
- setOccluded(true /* isOccluded */, false /* animate */);
- if (DEBUG) {
- Log.d(TAG, "Occlude by Dream animation cancelled. Occluded state is now: "
- + mOccluded);
- }
+ Log.d(TAG, "Occlude by Dream animation cancelled.");
}
@Override
@@ -1076,10 +1069,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
}
});
- setOccluded(isKeyguardOccluded /* isOccluded */, false /* animate */);
- Log.d(TAG, "Unocclude animation cancelled. Occluded state is now: "
- + mOccluded);
-
+ Log.d(TAG, "Unocclude animation cancelled.");
mInteractionJankMonitor.cancel(CUJ_LOCKSCREEN_OCCLUSION);
}
@@ -3446,10 +3436,7 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
public void onAnimationCancelled(boolean isKeyguardOccluded) throws RemoteException {
super.onAnimationCancelled(isKeyguardOccluded);
- Log.d(TAG, "Occlude animation cancelled by WM. "
- + "Setting occluded state to: " + isKeyguardOccluded);
- setOccluded(isKeyguardOccluded /* occluded */, false /* animate */);
-
+ Log.d(TAG, "Occlude animation cancelled by WM.");
mInteractionJankMonitor.cancel(CUJ_LOCKSCREEN_OCCLUSION);
}
}
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 74d87cd60b68..2426a882dadd 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;