diff --git a/services/core/java/com/android/server/wm/TaskStack.java b/services/core/java/com/android/server/wm/TaskStack.java index b09d699969741..d81db1663f6f2 100644 --- a/services/core/java/com/android/server/wm/TaskStack.java +++ b/services/core/java/com/android/server/wm/TaskStack.java @@ -1483,7 +1483,7 @@ public class TaskStack extends WindowContainer implements DimLayer.DimLaye return StackId.hasMovementAnimations(mStackId); } - public boolean getForceScaleToStack() { + public boolean isForceScaled() { return mBoundsAnimating; } diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 65e1f84eae357..970e62f980c05 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -1581,7 +1581,7 @@ class WindowState extends WindowContainer implements WindowManagerP // Anyway we don't need to synchronize position and content updates for these // windows since they aren't at the base layer and could be moved around anyway. if (!computeDragResizing() && mAttrs.type == TYPE_BASE_APPLICATION && - !getTask().mStack.getBoundsAnimating() && !isGoneForLayoutLw() && + !mWinAnimator.isForceScaled() && !isGoneForLayoutLw() && !getTask().inPinnedWorkspace()) { setResizedWhileNotDragResizing(true); } diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java index 24f9ce128ec63..c0929cb64cb97 100644 --- a/services/core/java/com/android/server/wm/WindowStateAnimator.java +++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java @@ -1318,7 +1318,7 @@ class WindowStateAnimator { float surfaceWidth = mSurfaceController.getWidth(); float surfaceHeight = mSurfaceController.getHeight(); - if ((task != null && task.mStack.getForceScaleToStack()) || mForceScaleUntilResize) { + if (isForceScaled()) { int hInsets = w.getAttrs().surfaceInsets.left + w.getAttrs().surfaceInsets.right; int vInsets = w.getAttrs().surfaceInsets.top + w.getAttrs().surfaceInsets.bottom; if (!mForceScaleUntilResize) { @@ -1953,4 +1953,16 @@ class WindowStateAnimator { } } } + + /** The force-scaled state for a given window can persist past + * the state for it's stack as the windows complete resizing + * independently of one another. + */ + boolean isForceScaled() { + final Task task = mWin.getTask(); + if (task != null && task.mStack.isForceScaled()) { + return true; + } + return mForceScaleUntilResize; + } }