Loading libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipAnimationController.java +1 −1 Original line number Diff line number Diff line Loading @@ -210,7 +210,7 @@ public class PipAnimationController { /** * Quietly cancel the animator by removing the listeners first. */ public static void quietCancel(@NonNull ValueAnimator animator) { static void quietCancel(@NonNull ValueAnimator animator) { animator.removeAllUpdateListeners(); animator.removeAllListeners(); animator.cancel(); Loading libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java +7 −0 Original line number Diff line number Diff line Loading @@ -147,10 +147,12 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, // These callbacks are called on the update thread private final PipAnimationController.PipAnimationCallback mPipAnimationCallback = new PipAnimationController.PipAnimationCallback() { private boolean mIsCancelled; @Override public void onPipAnimationStart(TaskInfo taskInfo, PipAnimationController.PipTransitionAnimator animator) { final int direction = animator.getTransitionDirection(); mIsCancelled = false; sendOnPipTransitionStarted(direction); } Loading @@ -158,6 +160,10 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, public void onPipAnimationEnd(TaskInfo taskInfo, SurfaceControl.Transaction tx, PipAnimationController.PipTransitionAnimator animator) { final int direction = animator.getTransitionDirection(); if (mIsCancelled) { sendOnPipTransitionFinished(direction); return; } final int animationType = animator.getAnimationType(); final Rect destinationBounds = animator.getDestinationBounds(); if (isInPipDirection(direction) && animator.getContentOverlayLeash() != null) { Loading Loading @@ -196,6 +202,7 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, public void onPipAnimationCancel(TaskInfo taskInfo, PipAnimationController.PipTransitionAnimator animator) { final int direction = animator.getTransitionDirection(); mIsCancelled = true; if (isInPipDirection(direction) && animator.getContentOverlayLeash() != null) { fadeOutAndRemoveOverlay(animator.getContentOverlayLeash(), animator::clearContentOverlay, true /* withStartDelay */); Loading libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java +1 −1 Original line number Diff line number Diff line Loading @@ -779,7 +779,7 @@ public class PipController implements PipTransitionController.PipTransitionCallb mPipAnimationController.getCurrentAnimator(); if (animator != null && animator.isRunning()) { // cancel any running animator, as it is using stale display layout information PipAnimationController.quietCancel(animator); animator.cancel(); } onDisplayChangedUncheck(layout, saveRestoreSnapFraction); } Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipAnimationController.java +1 −1 Original line number Diff line number Diff line Loading @@ -210,7 +210,7 @@ public class PipAnimationController { /** * Quietly cancel the animator by removing the listeners first. */ public static void quietCancel(@NonNull ValueAnimator animator) { static void quietCancel(@NonNull ValueAnimator animator) { animator.removeAllUpdateListeners(); animator.removeAllListeners(); animator.cancel(); Loading
libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java +7 −0 Original line number Diff line number Diff line Loading @@ -147,10 +147,12 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, // These callbacks are called on the update thread private final PipAnimationController.PipAnimationCallback mPipAnimationCallback = new PipAnimationController.PipAnimationCallback() { private boolean mIsCancelled; @Override public void onPipAnimationStart(TaskInfo taskInfo, PipAnimationController.PipTransitionAnimator animator) { final int direction = animator.getTransitionDirection(); mIsCancelled = false; sendOnPipTransitionStarted(direction); } Loading @@ -158,6 +160,10 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, public void onPipAnimationEnd(TaskInfo taskInfo, SurfaceControl.Transaction tx, PipAnimationController.PipTransitionAnimator animator) { final int direction = animator.getTransitionDirection(); if (mIsCancelled) { sendOnPipTransitionFinished(direction); return; } final int animationType = animator.getAnimationType(); final Rect destinationBounds = animator.getDestinationBounds(); if (isInPipDirection(direction) && animator.getContentOverlayLeash() != null) { Loading Loading @@ -196,6 +202,7 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, public void onPipAnimationCancel(TaskInfo taskInfo, PipAnimationController.PipTransitionAnimator animator) { final int direction = animator.getTransitionDirection(); mIsCancelled = true; if (isInPipDirection(direction) && animator.getContentOverlayLeash() != null) { fadeOutAndRemoveOverlay(animator.getContentOverlayLeash(), animator::clearContentOverlay, true /* withStartDelay */); Loading
libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java +1 −1 Original line number Diff line number Diff line Loading @@ -779,7 +779,7 @@ public class PipController implements PipTransitionController.PipTransitionCallb mPipAnimationController.getCurrentAnimator(); if (animator != null && animator.isRunning()) { // cancel any running animator, as it is using stale display layout information PipAnimationController.quietCancel(animator); animator.cancel(); } onDisplayChangedUncheck(layout, saveRestoreSnapFraction); } Loading