diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/AsyncRotationController.java | 2 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/DisplayContent.java | 11 |
2 files changed, 9 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/wm/AsyncRotationController.java b/services/core/java/com/android/server/wm/AsyncRotationController.java index 6ed896751bb3..e7fb26550886 100644 --- a/services/core/java/com/android/server/wm/AsyncRotationController.java +++ b/services/core/java/com/android/server/wm/AsyncRotationController.java @@ -642,7 +642,7 @@ class AsyncRotationController extends FadeAnimationController implements Consume // by drawing the rotated content before applying projection transaction of display. // And it will fade in after the display transition is finished. if (mTransitionOp == OP_APP_SWITCH && !mIsStartTransactionCommitted - && canBeAsync(w.mToken)) { + && canBeAsync(w.mToken) && !mDisplayContent.hasFixedRotationTransientLaunch()) { hideImmediately(w.mToken, Operation.ACTION_FADE); if (DEBUG) Slog.d(TAG, "Hide on finishDrawing " + w.mToken.getTopChild()); } diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index 837d08b33756..cabab6548615 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -1950,6 +1950,12 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp && mFixedRotationLaunchingApp != mFixedRotationTransitionListener.mAnimatingRecents; } + /** It usually means whether the recents activity is launching with a different rotation. */ + boolean hasFixedRotationTransientLaunch() { + return mFixedRotationLaunchingApp != null + && mTransitionController.isTransientLaunch(mFixedRotationLaunchingApp); + } + boolean isFixedRotationLaunchingApp(ActivityRecord r) { return mFixedRotationLaunchingApp == r; } @@ -7013,9 +7019,8 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp boolean shouldDeferRotation() { ActivityRecord source = null; if (mTransitionController.isShellTransitionsEnabled()) { - final ActivityRecord r = mFixedRotationLaunchingApp; - if (r != null && mTransitionController.isTransientLaunch(r)) { - source = r; + if (hasFixedRotationTransientLaunch()) { + source = mFixedRotationLaunchingApp; } } else if (mAnimatingRecents != null && !hasTopFixedRotationLaunchingApp()) { source = mAnimatingRecents; |