Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 077d7af3 authored by Hongwei Wang's avatar Hongwei Wang
Browse files

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
parent d7ce1479
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -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();