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

Commit aee84be4 authored by Sunny Goyal's avatar Sunny Goyal Committed by Automerger Merge Worker
Browse files

Merge "Fixes broken callbacks in RecentsAnimationCallbacks" into udc-qpr-dev am: a6f089c5

parents 0eb2b24d a6f089c5
Loading
Loading
Loading
Loading
+12 −8
Original line number Diff line number Diff line
@@ -125,13 +125,14 @@ public class TaskAnimationManager implements RecentsAnimationCallbacks.RecentsAn
            // If mCallbacks still != null, that means we are getting this startRecentsAnimation()
            // before the previous one got onRecentsAnimationStart(). In that case, cleanup the
            // previous animation so it doesn't mess up/listen to state changes in this animation.
            cleanUpRecentsAnimation();
            cleanUpRecentsAnimation(mCallbacks);
        }

        final BaseActivityInterface activityInterface = gestureState.getActivityInterface();
        mLastGestureState = gestureState;
        mCallbacks = new RecentsAnimationCallbacks(SystemUiProxy.INSTANCE.get(mCtx),
                activityInterface.allowMinimizeSplitScreen());
        RecentsAnimationCallbacks newCallbacks = new RecentsAnimationCallbacks(
                SystemUiProxy.INSTANCE.get(mCtx), activityInterface.allowMinimizeSplitScreen());
        mCallbacks = newCallbacks;
        mCallbacks.addListener(new RecentsAnimationCallbacks.RecentsAnimationListener() {
            @Override
            public void onRecentsAnimationStart(RecentsAnimationController controller,
@@ -157,12 +158,12 @@ public class TaskAnimationManager implements RecentsAnimationCallbacks.RecentsAn

            @Override
            public void onRecentsAnimationCanceled(HashMap<Integer, ThumbnailData> thumbnailDatas) {
                cleanUpRecentsAnimation();
                cleanUpRecentsAnimation(newCallbacks);
            }

            @Override
            public void onRecentsAnimationFinished(RecentsAnimationController controller) {
                cleanUpRecentsAnimation();
                cleanUpRecentsAnimation(newCallbacks);
            }

            @Override
@@ -334,7 +335,6 @@ public class TaskAnimationManager implements RecentsAnimationCallbacks.RecentsAn
        if (mController != null) {
            ActiveGestureLog.INSTANCE.addLog(
                    /* event= */ "finishRunningRecentsAnimation", toHome);
            mCallbacks.notifyAnimationCanceled();
            if (forceFinish) {
                mController.finishController(toHome, null, false /* sendUserLeaveHint */,
                        true /* forceFinish */);
@@ -343,7 +343,6 @@ public class TaskAnimationManager implements RecentsAnimationCallbacks.RecentsAn
                        ? mController::finishAnimationToHome
                        : mController::finishAnimationToApp);
            }
            cleanUpRecentsAnimation();
        }
    }

@@ -370,7 +369,12 @@ public class TaskAnimationManager implements RecentsAnimationCallbacks.RecentsAn
    /**
     * Cleans up the recents animation entirely.
     */
    private void cleanUpRecentsAnimation() {
    private void cleanUpRecentsAnimation(RecentsAnimationCallbacks targetCallbacks) {
        if (mCallbacks != targetCallbacks) {
            ActiveGestureLog.INSTANCE.addLog(
                    /* event= */ "cleanUpRecentsAnimation skipped due to wrong callbacks");
            return;
        }
        ActiveGestureLog.INSTANCE.addLog(/* event= */ "cleanUpRecentsAnimation");
        if (mLiveTileCleanUpHandler != null) {
            mLiveTileCleanUpHandler.run();