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

Commit 4e54b2f3 authored by Chris Li's avatar Chris Li Committed by Gerrit Code Review
Browse files

Merge "Block animation transfer after surface animation finishes."

parents 35ac7e34 905e0279
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -85,6 +85,8 @@ class SurfaceAnimator {

    private boolean mAnimationStartDelayed;

    private boolean mAnimationFinished;

    /**
     * @param animatable The object to animate.
     * @param staticAnimationFinishedCallback Callback to invoke when an animation has finished
@@ -134,6 +136,7 @@ class SurfaceAnimator {
                        || anim.shouldDeferAnimationFinish(resetAndInvokeFinish))) {
                    resetAndInvokeFinish.run();
                }
                mAnimationFinished = true;
            }
        };
    }
@@ -289,6 +292,9 @@ class SurfaceAnimator {
            Slog.w(TAG, "Unable to transfer animation, surface or parent is null");
            cancelAnimation();
            return;
        } else if (from.mAnimationFinished) {
            Slog.w(TAG, "Unable to transfer animation, because " + from + " animation is finished");
            return;
        }
        endDelayingAnimationStart();
        final Transaction t = mAnimatable.getPendingTransaction();
@@ -367,6 +373,7 @@ class SurfaceAnimator {
        SurfaceControl leash = mLeash;
        mLeash = null;
        final boolean scheduleAnim = removeLeash(t, mAnimatable, leash, destroyLeash);
        mAnimationFinished = false;
        if (scheduleAnim) {
            mService.scheduleAnimationLocked();
        }