Merge "Schedule new transition on aspect ratio change only" into rvc-dev
diff --git a/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java b/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java
index 1566877..836485a 100644
--- a/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java
+++ b/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java
@@ -219,12 +219,28 @@
@Override
public void onTaskInfoChanged(ActivityManager.RunningTaskInfo info) {
+ final PictureInPictureParams newParams = info.pictureInPictureParams;
+ if (!shouldUpdateDestinationBounds(newParams)) {
+ Log.d(TAG, "Ignored onTaskInfoChanged with PiP param: " + newParams);
+ return;
+ }
final Rect destinationBounds = mPipBoundsHandler.getDestinationBounds(
- getAspectRatioOrDefault(info.pictureInPictureParams), null /* bounds */);
+ getAspectRatioOrDefault(newParams), null /* bounds */);
Objects.requireNonNull(destinationBounds, "Missing destination bounds");
animateResizePip(destinationBounds, DURATION_DEFAULT_MS);
}
+ /**
+ * @return {@code true} if the aspect ratio is changed since no other parameters within
+ * {@link PictureInPictureParams} would affect the bounds.
+ */
+ private boolean shouldUpdateDestinationBounds(PictureInPictureParams params) {
+ if (params == null || mTaskInfo.pictureInPictureParams == null) {
+ return params != mTaskInfo.pictureInPictureParams;
+ }
+ return !Objects.equals(mTaskInfo.pictureInPictureParams.getAspectRatioRational(),
+ params.getAspectRatioRational());
+ }
/**
* Directly perform manipulation/resize on the leash. This will not perform any