diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/DisplayPolicy.java | 9 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/KeyguardController.java | 21 |
2 files changed, 16 insertions, 14 deletions
diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java index 9ac1762c995e..b419f36e45a3 100644 --- a/services/core/java/com/android/server/wm/DisplayPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayPolicy.java @@ -57,7 +57,6 @@ import static android.view.WindowManager.LayoutParams.TYPE_TOAST; import static android.view.WindowManager.LayoutParams.TYPE_VOICE_INTERACTION; import static android.view.WindowManager.LayoutParams.TYPE_VOICE_INTERACTION_STARTING; import static android.view.WindowManager.LayoutParams.TYPE_WALLPAPER; -import static android.view.WindowManager.TRANSIT_WAKE; import static android.view.WindowManagerGlobal.ADD_OKAY; import static android.view.WindowManagerPolicyConstants.ACTION_HDMI_PLUGGED; import static android.view.WindowManagerPolicyConstants.ALT_BAR_BOTTOM; @@ -789,13 +788,7 @@ public class DisplayPolicy { if (!mDisplayContent.isDefaultDisplay) { return; } - if (mAwake && mDisplayContent.mTransitionController.isShellTransitionsEnabled() - && !mDisplayContent.mTransitionController.isCollecting()) { - // Start a transition for waking. This is needed for showWhenLocked activities. - mDisplayContent.mTransitionController.requestTransitionIfNeeded(TRANSIT_WAKE, - 0 /* flags */, null /* trigger */, mDisplayContent); - } - mService.mAtmService.mKeyguardController.updateDeferWakeTransition( + mService.mAtmService.mKeyguardController.updateDeferTransitionForAod( mAwake /* waiting */); } } diff --git a/services/core/java/com/android/server/wm/KeyguardController.java b/services/core/java/com/android/server/wm/KeyguardController.java index 1567fa760a94..49df64b4c233 100644 --- a/services/core/java/com/android/server/wm/KeyguardController.java +++ b/services/core/java/com/android/server/wm/KeyguardController.java @@ -176,7 +176,7 @@ class KeyguardController { final boolean keyguardChanged = (keyguardShowing != state.mKeyguardShowing) || (state.mKeyguardGoingAway && keyguardShowing && !aodRemoved); if (aodRemoved) { - updateDeferWakeTransition(false /* waiting */); + updateDeferTransitionForAod(false /* waiting */); } if (!keyguardChanged && !aodChanged) { setWakeTransitionReady(); @@ -533,24 +533,25 @@ class KeyguardController { private final Runnable mResetWaitTransition = () -> { synchronized (mWindowManager.mGlobalLock) { - updateDeferWakeTransition(false /* waiting */); + updateDeferTransitionForAod(false /* waiting */); } }; - void updateDeferWakeTransition(boolean waiting) { + // Defer transition until AOD dismissed. + void updateDeferTransitionForAod(boolean waiting) { if (waiting == mWaitingForWakeTransition) { return; } - if (!mWindowManager.mAtmService.getTransitionController().isShellTransitionsEnabled()) { + if (!mService.getTransitionController().isCollecting()) { return; } - // if aod is showing, defer the wake transition until aod state changed. + // if AOD is showing, defer the wake transition until AOD state changed. if (waiting && isAodShowing(DEFAULT_DISPLAY)) { mWaitingForWakeTransition = true; mWindowManager.mAtmService.getTransitionController().deferTransitionReady(); mWindowManager.mH.postDelayed(mResetWaitTransition, DEFER_WAKE_TRANSITION_TIMEOUT_MS); } else if (!waiting) { - // dismiss the deferring if the aod state change or cancel awake. + // dismiss the deferring if the AOD state change or cancel awake. mWaitingForWakeTransition = false; mWindowManager.mAtmService.getTransitionController().continueTransitionReady(); mWindowManager.mH.removeCallbacks(mResetWaitTransition); @@ -657,10 +658,18 @@ class KeyguardController { mTopTurnScreenOnActivity.setCurrentLaunchCanTurnScreenOn(false); } + boolean hasChange = false; if (lastOccluded != mOccluded) { controller.handleOccludedChanged(mDisplayId, mTopOccludesActivity); + hasChange = true; } else if (!lastKeyguardGoingAway && mKeyguardGoingAway) { controller.handleKeyguardGoingAwayChanged(display); + hasChange = true; + } + // Collect the participates for shell transition, so that transition won't happen too + // early since the transition was set ready. + if (hasChange && top != null && (mOccluded || mKeyguardGoingAway)) { + display.mTransitionController.collect(top); } } |