diff options
3 files changed, 5 insertions, 22 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index d7725865f609..287248f311a8 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -6187,6 +6187,10 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // The pending transition state will be cleared after the transition is started, so // save the state for launching the client later (used by LaunchActivityItem). mStartingData.mIsTransitionForward = true; + // Ensure that the transition can run with the latest orientation. + if (this != mDisplayContent.getLastOrientationSource()) { + mDisplayContent.updateOrientation(); + } mDisplayContent.executeAppTransition(); } } diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index 83ff2f07a06f..159c71b80955 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -1642,18 +1642,12 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp // It has been set and not yet finished. return true; } - if (!r.occludesParent()) { + if (!r.occludesParent() || r.isReportedDrawn()) { // While entering or leaving a translucent or floating activity (e.g. dialog style), // there is a visible activity in the background. Then it still needs rotation animation // to cover the activity configuration change. return false; } - if (mTransitionController.isShellTransitionsEnabled() - ? mTransitionController.wasVisibleAtStart(r) : r.isVisible()) { - // If activity is already visible, then it's not "launching". However, shell-transitions - // will make it visible immediately. - return false; - } if (checkOpening) { if (mTransitionController.isShellTransitionsEnabled()) { if (!mTransitionController.isCollecting(r)) { diff --git a/services/core/java/com/android/server/wm/TransitionController.java b/services/core/java/com/android/server/wm/TransitionController.java index b5bac76a5ae4..b0532c2a1552 100644 --- a/services/core/java/com/android/server/wm/TransitionController.java +++ b/services/core/java/com/android/server/wm/TransitionController.java @@ -282,21 +282,6 @@ class TransitionController { return false; } - /** - * Temporary work-around to deal with integration of legacy fixed-rotation. Returns whether - * the activity was visible before the collecting transition. - * TODO: at-least replace the polling mechanism. - */ - boolean wasVisibleAtStart(@NonNull ActivityRecord ar) { - if (mCollectingTransition == null) return ar.isVisible(); - final Transition.ChangeInfo ci = mCollectingTransition.mChanges.get(ar); - if (ci == null) { - // not part of transition, so use current state. - return ar.isVisible(); - } - return ci.mVisible; - } - @WindowConfiguration.WindowingMode int getWindowingModeAtStart(@NonNull WindowContainer wc) { if (mCollectingTransition == null) return wc.getWindowingMode(); |