diff options
| author | 2023-03-30 16:15:41 +0000 | |
|---|---|---|
| committer | 2023-03-30 16:15:41 +0000 | |
| commit | 272353192f99388f1457ed4071656e16037db02d (patch) | |
| tree | 268e3b0c473b50fda14735d68098c18d6a978cbd | |
| parent | 30471b9149ed36547e1194fe24fc6d937dcc4e51 (diff) | |
| parent | 98dc39863e45e1b50a540510e9b272bba17fc084 (diff) | |
Merge "RESTRICT AUTOMERGE Revert "Hold onto occluded change until it's committed"" into tm-qpr-dev
| -rw-r--r-- | services/core/java/com/android/server/policy/PhoneWindowManager.java | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index afd9316092ff..be4fe09d593c 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -3341,7 +3341,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { mPendingKeyguardOccluded = occluded; mKeyguardOccludedChanged = true; } else { - setKeyguardOccludedLw(occluded, false /* transitionStarted */); + setKeyguardOccludedLw(occluded, false /* force */, + false /* transitionStarted */); } } @@ -3350,7 +3351,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (mKeyguardOccludedChanged) { if (DEBUG_KEYGUARD) Slog.d(TAG, "transition/occluded changed occluded=" + mPendingKeyguardOccluded); - if (setKeyguardOccludedLw(mPendingKeyguardOccluded, transitionStarted)) { + if (setKeyguardOccludedLw(mPendingKeyguardOccluded, false /* force */, + transitionStarted)) { return FINISH_LAYOUT_REDO_LAYOUT | FINISH_LAYOUT_REDO_WALLPAPER; } } @@ -3599,15 +3601,22 @@ public class PhoneWindowManager implements WindowManagerPolicy { } /** - * Updates the occluded state of the Keyguard immediately via - * {@link com.android.internal.policy.IKeyguardService}. + * Updates the occluded state of the Keyguard. * * @param isOccluded Whether the Keyguard is occluded by another window. + * @param force notify the occluded status to KeyguardService and update flags even though + * occlude status doesn't change. * @param transitionStarted {@code true} if keyguard (un)occluded transition started. * @return Whether the flags have changed and we have to redo the layout. */ - private boolean setKeyguardOccludedLw(boolean isOccluded, boolean transitionStarted) { + private boolean setKeyguardOccludedLw(boolean isOccluded, boolean force, + boolean transitionStarted) { if (DEBUG_KEYGUARD) Slog.d(TAG, "setKeyguardOccluded occluded=" + isOccluded); + mKeyguardOccludedChanged = false; + if (isKeyguardOccluded() == isOccluded && !force) { + return false; + } + final boolean showing = mKeyguardDelegate.isShowing(); final boolean animate = showing && !isOccluded; // When remote animation is enabled for keyguard (un)occlude transition, KeyguardService @@ -3615,10 +3624,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { // to notify here. final boolean notify = !WindowManagerService.sEnableRemoteKeyguardOccludeAnimation || !transitionStarted; - if (notify) { - mKeyguardOccludedChanged = false; - mKeyguardDelegate.setOccluded(isOccluded, animate, notify); - } + mKeyguardDelegate.setOccluded(isOccluded, animate, notify); return showing; } |