Merge "Allow PipTouchHandler to re-enable the touches" into tm-qpr-dev

This commit is contained in:
Hongwei Wang
2023-03-24 20:21:11 +00:00
committed by Android (Google) Code Review
3 changed files with 9 additions and 2 deletions

View File

@@ -210,7 +210,7 @@ public class PipAnimationController {
/** /**
* Quietly cancel the animator by removing the listeners first. * 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.removeAllUpdateListeners();
animator.removeAllListeners(); animator.removeAllListeners();
animator.cancel(); animator.cancel();

View File

@@ -147,10 +147,12 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
// These callbacks are called on the update thread // These callbacks are called on the update thread
private final PipAnimationController.PipAnimationCallback mPipAnimationCallback = private final PipAnimationController.PipAnimationCallback mPipAnimationCallback =
new PipAnimationController.PipAnimationCallback() { new PipAnimationController.PipAnimationCallback() {
private boolean mIsCancelled;
@Override @Override
public void onPipAnimationStart(TaskInfo taskInfo, public void onPipAnimationStart(TaskInfo taskInfo,
PipAnimationController.PipTransitionAnimator animator) { PipAnimationController.PipTransitionAnimator animator) {
final int direction = animator.getTransitionDirection(); final int direction = animator.getTransitionDirection();
mIsCancelled = false;
sendOnPipTransitionStarted(direction); sendOnPipTransitionStarted(direction);
} }
@@ -158,6 +160,10 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
public void onPipAnimationEnd(TaskInfo taskInfo, SurfaceControl.Transaction tx, public void onPipAnimationEnd(TaskInfo taskInfo, SurfaceControl.Transaction tx,
PipAnimationController.PipTransitionAnimator animator) { PipAnimationController.PipTransitionAnimator animator) {
final int direction = animator.getTransitionDirection(); final int direction = animator.getTransitionDirection();
if (mIsCancelled) {
sendOnPipTransitionFinished(direction);
return;
}
final int animationType = animator.getAnimationType(); final int animationType = animator.getAnimationType();
final Rect destinationBounds = animator.getDestinationBounds(); final Rect destinationBounds = animator.getDestinationBounds();
if (isInPipDirection(direction) && animator.getContentOverlayLeash() != null) { if (isInPipDirection(direction) && animator.getContentOverlayLeash() != null) {
@@ -196,6 +202,7 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
public void onPipAnimationCancel(TaskInfo taskInfo, public void onPipAnimationCancel(TaskInfo taskInfo,
PipAnimationController.PipTransitionAnimator animator) { PipAnimationController.PipTransitionAnimator animator) {
final int direction = animator.getTransitionDirection(); final int direction = animator.getTransitionDirection();
mIsCancelled = true;
if (isInPipDirection(direction) && animator.getContentOverlayLeash() != null) { if (isInPipDirection(direction) && animator.getContentOverlayLeash() != null) {
fadeOutAndRemoveOverlay(animator.getContentOverlayLeash(), fadeOutAndRemoveOverlay(animator.getContentOverlayLeash(),
animator::clearContentOverlay, true /* withStartDelay */); animator::clearContentOverlay, true /* withStartDelay */);

View File

@@ -779,7 +779,7 @@ public class PipController implements PipTransitionController.PipTransitionCallb
mPipAnimationController.getCurrentAnimator(); mPipAnimationController.getCurrentAnimator();
if (animator != null && animator.isRunning()) { if (animator != null && animator.isRunning()) {
// cancel any running animator, as it is using stale display layout information // cancel any running animator, as it is using stale display layout information
PipAnimationController.quietCancel(animator); animator.cancel();
} }
onDisplayChangedUncheck(layout, saveRestoreSnapFraction); onDisplayChangedUncheck(layout, saveRestoreSnapFraction);
} }