summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/ActivityStack.java28
1 files changed, 13 insertions, 15 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityStack.java b/services/core/java/com/android/server/wm/ActivityStack.java
index b33f23cfdf4e..c5c53d8ba4ca 100644
--- a/services/core/java/com/android/server/wm/ActivityStack.java
+++ b/services/core/java/com/android/server/wm/ActivityStack.java
@@ -5651,13 +5651,20 @@ class ActivityStack extends ConfigurationContainer {
void animateResizePinnedStack(Rect sourceHintBounds, Rect toBounds, int animationDuration,
boolean fromFullscreen) {
if (!inPinnedWindowingMode()) return;
- if (skipResizeAnimation(toBounds == null /* toFullscreen */)) {
- mService.moveTasksToFullscreenStack(mStackId, true /* onTop */);
- } else {
- if (getTaskStack() == null) return;
- getTaskStack().animateResizePinnedStack(toBounds, sourceHintBounds,
- animationDuration, fromFullscreen);
+ if (toBounds == null /* toFullscreen */) {
+ final Configuration parentConfig = getParent().getConfiguration();
+ final ActivityRecord top = topRunningNonOverlayTaskActivity();
+ if (top != null && !top.isConfigurationCompatible(parentConfig)) {
+ // The final orientation of this activity will change after moving to full screen.
+ // Start freezing screen here to prevent showing a temporary full screen window.
+ top.startFreezingScreenLocked(top.app, CONFIG_SCREEN_LAYOUT);
+ mService.moveTasksToFullscreenStack(mStackId, true /* onTop */);
+ return;
+ }
}
+ if (getTaskStack() == null) return;
+ getTaskStack().animateResizePinnedStack(toBounds, sourceHintBounds,
+ animationDuration, fromFullscreen);
}
/**
@@ -5673,15 +5680,6 @@ class ActivityStack extends ConfigurationContainer {
stack.getAnimationOrCurrentBounds(outBounds);
}
- private boolean skipResizeAnimation(boolean toFullscreen) {
- if (!toFullscreen) {
- return false;
- }
- final Configuration parentConfig = getParent().getConfiguration();
- final ActivityRecord top = topRunningNonOverlayTaskActivity();
- return top != null && !top.isConfigurationCompatible(parentConfig);
- }
-
void setPictureInPictureAspectRatio(float aspectRatio) {
if (getTaskStack() == null) return;
getTaskStack().setPictureInPictureAspectRatio(aspectRatio);