summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/ActivityRecord.java4
-rw-r--r--services/core/java/com/android/server/wm/DisplayContent.java8
-rw-r--r--services/core/java/com/android/server/wm/TransitionController.java15
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();