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

Commit 8cf4062a authored by Robert Carr's avatar Robert Carr Committed by android-build-merger
Browse files

Copy exiting app token list while stepping animation.

am: 46831fa9

Change-Id: I53c41afd54b9a315a0734dce357b1eef8485b84b
parents 42373881 46831fa9
Loading
Loading
Loading
Loading
+14 −3
Original line number Diff line number Diff line
@@ -119,6 +119,8 @@ public class WindowAnimator {
    // check if some got replaced and can be removed.
    private boolean mRemoveReplacedWindows = false;

    private final AppTokenList mTmpExitingAppTokens = new AppTokenList();

    private String forceHidingToString() {
        switch (mForceHiding) {
            case KEYGUARD_NOT_SHOWN:    return "KEYGUARD_NOT_SHOWN";
@@ -189,10 +191,19 @@ public class WindowAnimator {
                }
            }

            final AppTokenList exitingAppTokens = stack.mExitingAppTokens;
            final int exitingCount = exitingAppTokens.size();
            mTmpExitingAppTokens.clear();
            mTmpExitingAppTokens.addAll(stack.mExitingAppTokens);

            final int exitingCount = mTmpExitingAppTokens.size();
            for (int i = 0; i < exitingCount; i++) {
                final AppWindowAnimator appAnimator = exitingAppTokens.get(i).mAppAnimator;
                final AppWindowAnimator appAnimator = mTmpExitingAppTokens.get(i).mAppAnimator;
                // stepAnimation can trigger finishExit->removeWindowInnerLocked
                // ->performSurfacePlacement
                // performSurfacePlacement will directly manipulate the mExitingAppTokens list
                // so we need to iterate over a copy and check for modifications.
                if (!stack.mExitingAppTokens.contains(appAnimator)) {
                    continue;
                }
                appAnimator.wasAnimating = appAnimator.animating;
                if (appAnimator.stepAnimationLocked(mCurrentTime, displayId)) {
                    setAnimating(true);