Loading libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java +12 −6 Original line number Original line Diff line number Diff line Loading @@ -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(); } } Loading @@ -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(); Loading Loading @@ -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"); Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java +12 −6 Original line number Original line Diff line number Diff line Loading @@ -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(); } } Loading @@ -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(); Loading Loading @@ -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"); Loading