Avoid double end on PipTransitionAnimator

From the stack trace, there is a call from DefaultMixedHandler to end
the PipTransitionAnimator after the leash within PipAppIconOverlay has
released. Fix this by ignoreing any end call once the animator's ended.

Bug: 277662822
Test: Blind fix, no reproduce steps
Change-Id: Ic910b75d9744afab7c24c385377b761e7a27ae59
This commit is contained in:
Hongwei Wang
2023-05-16 14:31:00 -07:00
parent d7ce147903
commit 077d7af302

View File

@@ -328,6 +328,8 @@ public class PipAnimationController {
private PipSurfaceTransactionHelper mSurfaceTransactionHelper;
private @TransitionDirection int mTransitionDirection;
protected PipContentOverlay mContentOverlay;
// Flag to avoid double-end
private boolean mHasRequestedEnd;
private PipTransitionAnimator(TaskInfo taskInfo, SurfaceControl leash,
@AnimationType int animationType,
@@ -357,6 +359,7 @@ public class PipAnimationController {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
if (mHasRequestedEnd) return;
applySurfaceControlTransaction(mLeash,
mSurfaceControlTransactionFactory.getTransaction(),
animation.getAnimatedFraction());
@@ -364,6 +367,8 @@ public class PipAnimationController {
@Override
public void onAnimationEnd(Animator animation) {
if (mHasRequestedEnd) return;
mHasRequestedEnd = true;
mCurrentValue = mEndValue;
final SurfaceControl.Transaction tx =
mSurfaceControlTransactionFactory.getTransaction();