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

Commit a004cb0c authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix the recursive call for startBackNavigation." into main

parents 066af6b5 67d6db98
Loading
Loading
Loading
Loading
+12 −6
Original line number Original line Diff line number Diff line
@@ -632,16 +632,21 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont
    }
    }


    private class TransitionIdleRunner implements Runnable {
    private class TransitionIdleRunner implements Runnable {
        boolean mIsEnable;
        int mRequestCount;


        @Override
        @Override
        public void run() {
        public void run() {
            if (!mIsEnable || !mCurrentTracker.isActive()) {
            if (mRequestCount == 0 || !mCurrentTracker.isActive()) {
                return;
            }
            if (mRequestCount > 2) {
                // Break from recursive call.
                mRequestCount = 0;
                return;
                return;
            }
            }
            ProtoLog.d(WM_SHELL_BACK_PREVIEW, "Gesture hasn't finish after transition "
            ProtoLog.d(WM_SHELL_BACK_PREVIEW, "Gesture hasn't finish after transition "
                    + "idle, start back navigation again.");
                    + "idle, start back navigation again.");
            mIsEnable = false;
            mRequestCount = 0;
            startBackNavigation(mCurrentTracker);
            startBackNavigation(mCurrentTracker);
            startPredictiveBackAnimationIfNeeded();
            startPredictiveBackAnimationIfNeeded();
        }
        }
@@ -661,8 +666,9 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont
        if (backType == BackNavigationInfo.TYPE_IN_TRANSITION) {
        if (backType == BackNavigationInfo.TYPE_IN_TRANSITION) {
            mBackNavigationInfo = null;
            mBackNavigationInfo = null;
            tryPilferPointers();
            tryPilferPointers();
            mTransitionIdleRunner.mIsEnable = true;
            mTransitionIdleRunner.mRequestCount++;
            mTransitions.runOnIdle(() -> mShellExecutor.execute(mTransitionIdleRunner));
            mTransitions.runOnIdle(() -> mShellExecutor.executeDelayed(
                    mTransitionIdleRunner, 0));
            return;
            return;
        }
        }
        final boolean shouldDispatchToAnimator = shouldDispatchToAnimator();
        final boolean shouldDispatchToAnimator = shouldDispatchToAnimator();
@@ -889,7 +895,7 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont
        mPointersPilfered = false;
        mPointersPilfered = false;
        mBackGestureStarted = false;
        mBackGestureStarted = false;
        activeTouchTracker.setState(BackTouchTracker.TouchTrackerState.FINISHED);
        activeTouchTracker.setState(BackTouchTracker.TouchTrackerState.FINISHED);
        mTransitionIdleRunner.mIsEnable = false;
        mTransitionIdleRunner.mRequestCount = 0;


        if (mPostCommitAnimationInProgress) {
        if (mPostCommitAnimationInProgress) {
            ProtoLog.w(WM_SHELL_BACK_PREVIEW, "Animation is still running");
            ProtoLog.w(WM_SHELL_BACK_PREVIEW, "Animation is still running");