diff --git a/services/core/java/com/android/server/wm/PinnedStackController.java b/services/core/java/com/android/server/wm/PinnedStackController.java index 0e6b1b6a6ce91..012480e0410d7 100644 --- a/services/core/java/com/android/server/wm/PinnedStackController.java +++ b/services/core/java/com/android/server/wm/PinnedStackController.java @@ -298,6 +298,13 @@ class PinnedStackController { } } + /** + * @return the current aspect ratio. + */ + float getAspectRatio() { + return mAspectRatio; + } + /** * Sets the current set of actions. */ diff --git a/services/core/java/com/android/server/wm/PinnedStackWindowController.java b/services/core/java/com/android/server/wm/PinnedStackWindowController.java index 6a0e353ea385a..0b2cba3773390 100644 --- a/services/core/java/com/android/server/wm/PinnedStackWindowController.java +++ b/services/core/java/com/android/server/wm/PinnedStackWindowController.java @@ -79,19 +79,17 @@ public class PinnedStackWindowController extends StackWindowController { return; } - final int displayId = mContainer.getDisplayContent().getDisplayId(); - final Rect toBounds = mService.getPictureInPictureBounds(displayId, aspectRatio); - final Rect targetBounds = new Rect(); - mContainer.getAnimatingBounds(targetBounds); - if (!toBounds.equals(targetBounds)) { - animateResizePinnedStack(toBounds, -1 /* duration */); - } - final PinnedStackController pinnedStackController = mContainer.getDisplayContent().getPinnedStackController(); - pinnedStackController.setAspectRatio( - pinnedStackController.isValidPictureInPictureAspectRatio(aspectRatio) - ? aspectRatio : -1f); + + if (Float.compare(aspectRatio, pinnedStackController.getAspectRatio()) != 0) { + final int displayId = mContainer.getDisplayContent().getDisplayId(); + final Rect toBounds = mService.getPictureInPictureBounds(displayId, aspectRatio); + animateResizePinnedStack(toBounds, -1 /* duration */); + pinnedStackController.setAspectRatio( + pinnedStackController.isValidPictureInPictureAspectRatio(aspectRatio) + ? aspectRatio : -1f); + } } }