diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/ActivityStack.java | 28 |
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); |