summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/DisplayContent.java12
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java5
2 files changed, 17 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index f8086615b7d1..4dd950ba6ee9 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -2908,6 +2908,18 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
&& !mDisplayRotation.isRotatingSeamlessly()) {
clearFixedRotationLaunchingApp();
}
+ // If there won't be a transition to notify the launch is done, then it should be ready to
+ // update with display orientation. E.g. a translucent activity enters pip from a task which
+ // contains another opaque activity.
+ if (mFixedRotationLaunchingApp != null && mFixedRotationLaunchingApp.isVisible()
+ && !mTransitionController.isCollecting()
+ && !mAtmService.mBackNavigationController.isMonitoringFinishTransition()) {
+ final Transition finishTransition = mTransitionController.mFinishingTransition;
+ if (finishTransition == null || !finishTransition.mParticipants.contains(
+ mFixedRotationLaunchingApp)) {
+ continueUpdateOrientationForDiffOrienLaunchingApp();
+ }
+ }
}
/**
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
index db71f2bf039d..e0467547812c 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
@@ -1863,6 +1863,11 @@ public class DisplayContentTests extends WindowTestsBase {
assertEquals("Display must be portrait after closing the translucent activity",
Configuration.ORIENTATION_PORTRAIT,
mDisplayContent.getConfiguration().orientation);
+
+ mDisplayContent.setFixedRotationLaunchingAppUnchecked(nonTopVisible);
+ mDisplayContent.onTransitionFinished();
+ assertFalse("Complete fixed rotation if not in a transition",
+ mDisplayContent.hasTopFixedRotationLaunchingApp());
}
@Test