Loading packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java +13 −8 Original line number Diff line number Diff line Loading @@ -190,6 +190,7 @@ public class PipTaskOrganizer extends TaskOrganizer { private @PipAnimationController.AnimationType int mOneShotAnimationType = ANIM_TYPE_BOUNDS; private PipSurfaceTransactionHelper.SurfaceControlTransactionFactory mSurfaceControlTransactionFactory; private PictureInPictureParams mPictureInPictureParams; public PipTaskOrganizer(Context context, @NonNull PipBoundsHandler boundsHandler, @NonNull PipSurfaceTransactionHelper surfaceTransactionHelper, Loading Loading @@ -257,8 +258,9 @@ public class PipTaskOrganizer extends TaskOrganizer { @Override public void onTaskAppeared(ActivityManager.RunningTaskInfo info, SurfaceControl leash) { Objects.requireNonNull(info, "Requires RunningTaskInfo"); mPictureInPictureParams = info.pictureInPictureParams; final Rect destinationBounds = mPipBoundsHandler.getDestinationBounds( info.topActivity, getAspectRatioOrDefault(info.pictureInPictureParams), info.topActivity, getAspectRatioOrDefault(mPictureInPictureParams), null /* bounds */, getMinimalSize(info.topActivityInfo)); Objects.requireNonNull(destinationBounds, "Missing destination bounds"); mTaskInfo = info; Loading Loading @@ -304,6 +306,7 @@ public class PipTaskOrganizer extends TaskOrganizer { Log.wtf(TAG, "Unrecognized token: " + token); return; } mPictureInPictureParams = null; mInPip = false; } Loading @@ -311,7 +314,7 @@ public class PipTaskOrganizer extends TaskOrganizer { public void onTaskInfoChanged(ActivityManager.RunningTaskInfo info) { Objects.requireNonNull(mToken, "onTaskInfoChanged requires valid existing mToken"); final PictureInPictureParams newParams = info.pictureInPictureParams; if (!shouldUpdateDestinationBounds(newParams)) { if (!applyPictureInPictureParams(newParams)) { Log.d(TAG, "Ignored onTaskInfoChanged with PiP param: " + newParams); return; } Loading Loading @@ -359,7 +362,7 @@ public class PipTaskOrganizer extends TaskOrganizer { } final Rect newDestinationBounds = mPipBoundsHandler.getDestinationBounds( mTaskInfo.topActivity, getAspectRatioOrDefault(mTaskInfo.pictureInPictureParams), mTaskInfo.topActivity, getAspectRatioOrDefault(mPictureInPictureParams), null /* bounds */, getMinimalSize(mTaskInfo.topActivityInfo)); if (newDestinationBounds.equals(currentDestinationBounds)) return; if (animator.getAnimationType() == ANIM_TYPE_BOUNDS) { Loading @@ -373,12 +376,14 @@ public class PipTaskOrganizer extends TaskOrganizer { * @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()); private boolean applyPictureInPictureParams(@NonNull PictureInPictureParams params) { final boolean changed = (mPictureInPictureParams == null) ? true : !Objects.equals( mPictureInPictureParams.getAspectRatioRational(), params.getAspectRatioRational()); if (changed) { mPictureInPictureParams = params; mPipBoundsHandler.onAspectRatioChanged(params.getAspectRatio()); } return changed; } /** Loading Loading
packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java +13 −8 Original line number Diff line number Diff line Loading @@ -190,6 +190,7 @@ public class PipTaskOrganizer extends TaskOrganizer { private @PipAnimationController.AnimationType int mOneShotAnimationType = ANIM_TYPE_BOUNDS; private PipSurfaceTransactionHelper.SurfaceControlTransactionFactory mSurfaceControlTransactionFactory; private PictureInPictureParams mPictureInPictureParams; public PipTaskOrganizer(Context context, @NonNull PipBoundsHandler boundsHandler, @NonNull PipSurfaceTransactionHelper surfaceTransactionHelper, Loading Loading @@ -257,8 +258,9 @@ public class PipTaskOrganizer extends TaskOrganizer { @Override public void onTaskAppeared(ActivityManager.RunningTaskInfo info, SurfaceControl leash) { Objects.requireNonNull(info, "Requires RunningTaskInfo"); mPictureInPictureParams = info.pictureInPictureParams; final Rect destinationBounds = mPipBoundsHandler.getDestinationBounds( info.topActivity, getAspectRatioOrDefault(info.pictureInPictureParams), info.topActivity, getAspectRatioOrDefault(mPictureInPictureParams), null /* bounds */, getMinimalSize(info.topActivityInfo)); Objects.requireNonNull(destinationBounds, "Missing destination bounds"); mTaskInfo = info; Loading Loading @@ -304,6 +306,7 @@ public class PipTaskOrganizer extends TaskOrganizer { Log.wtf(TAG, "Unrecognized token: " + token); return; } mPictureInPictureParams = null; mInPip = false; } Loading @@ -311,7 +314,7 @@ public class PipTaskOrganizer extends TaskOrganizer { public void onTaskInfoChanged(ActivityManager.RunningTaskInfo info) { Objects.requireNonNull(mToken, "onTaskInfoChanged requires valid existing mToken"); final PictureInPictureParams newParams = info.pictureInPictureParams; if (!shouldUpdateDestinationBounds(newParams)) { if (!applyPictureInPictureParams(newParams)) { Log.d(TAG, "Ignored onTaskInfoChanged with PiP param: " + newParams); return; } Loading Loading @@ -359,7 +362,7 @@ public class PipTaskOrganizer extends TaskOrganizer { } final Rect newDestinationBounds = mPipBoundsHandler.getDestinationBounds( mTaskInfo.topActivity, getAspectRatioOrDefault(mTaskInfo.pictureInPictureParams), mTaskInfo.topActivity, getAspectRatioOrDefault(mPictureInPictureParams), null /* bounds */, getMinimalSize(mTaskInfo.topActivityInfo)); if (newDestinationBounds.equals(currentDestinationBounds)) return; if (animator.getAnimationType() == ANIM_TYPE_BOUNDS) { Loading @@ -373,12 +376,14 @@ public class PipTaskOrganizer extends TaskOrganizer { * @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()); private boolean applyPictureInPictureParams(@NonNull PictureInPictureParams params) { final boolean changed = (mPictureInPictureParams == null) ? true : !Objects.equals( mPictureInPictureParams.getAspectRatioRational(), params.getAspectRatioRational()); if (changed) { mPictureInPictureParams = params; mPipBoundsHandler.onAspectRatioChanged(params.getAspectRatio()); } return changed; } /** Loading