diff --git a/quickstep/src/com/android/quickstep/TaskAnimationManager.java b/quickstep/src/com/android/quickstep/TaskAnimationManager.java index 0de4ffc32e..2896fe04b7 100644 --- a/quickstep/src/com/android/quickstep/TaskAnimationManager.java +++ b/quickstep/src/com/android/quickstep/TaskAnimationManager.java @@ -331,7 +331,7 @@ public class TaskAnimationManager implements RecentsAnimationCallbacks.RecentsAn * Finishes the running recents animation. * @param forceFinish will synchronously finish the controller */ - private void finishRunningRecentsAnimation(boolean toHome, boolean forceFinish) { + public void finishRunningRecentsAnimation(boolean toHome, boolean forceFinish) { if (mController != null) { ActiveGestureLog.INSTANCE.addLog( /* event= */ "finishRunningRecentsAnimation", toHome); diff --git a/quickstep/src/com/android/quickstep/inputconsumers/NavHandleLongPressInputConsumer.java b/quickstep/src/com/android/quickstep/inputconsumers/NavHandleLongPressInputConsumer.java index a9accb7bf7..0b11b0032e 100644 --- a/quickstep/src/com/android/quickstep/inputconsumers/NavHandleLongPressInputConsumer.java +++ b/quickstep/src/com/android/quickstep/inputconsumers/NavHandleLongPressInputConsumer.java @@ -15,6 +15,8 @@ */ package com.android.quickstep.inputconsumers; +import static com.android.launcher3.util.Executors.MAIN_EXECUTOR; + import android.content.Context; import android.view.GestureDetector; import android.view.GestureDetector.SimpleOnGestureListener; @@ -52,7 +54,7 @@ public class NavHandleLongPressInputConsumer extends DelegateInputConsumer { if (longPressRunnable != null) { setActive(motionEvent); - longPressRunnable.run(); + MAIN_EXECUTOR.post(longPressRunnable); } } } diff --git a/quickstep/src/com/android/quickstep/inputconsumers/OtherActivityInputConsumer.java b/quickstep/src/com/android/quickstep/inputconsumers/OtherActivityInputConsumer.java index 4c66504b89..7e6116720b 100644 --- a/quickstep/src/com/android/quickstep/inputconsumers/OtherActivityInputConsumer.java +++ b/quickstep/src/com/android/quickstep/inputconsumers/OtherActivityInputConsumer.java @@ -417,8 +417,9 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC private void finishTouchTracking(MotionEvent ev) { TraceHelper.INSTANCE.beginSection(UP_EVT); + boolean isCanceled = ev.getActionMasked() == ACTION_CANCEL; if (mPassedWindowMoveSlop && mInteractionHandler != null) { - if (ev.getActionMasked() == ACTION_CANCEL) { + if (isCanceled) { mInteractionHandler.onGestureCancelled(); } else { mVelocityTracker.computeCurrentVelocity(PX_PER_MS); @@ -440,8 +441,10 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC if (mActiveCallbacks != null && mInteractionHandler != null) { if (mTaskAnimationManager.isRecentsAnimationRunning()) { // The animation started, but with no movement, in this case, there will be no - // animateToProgress so we have to manually finish here. - mTaskAnimationManager.finishRunningRecentsAnimation(false /* toHome */); + // animateToProgress so we have to manually finish here. In the case of + // ACTION_CANCEL, someone else may be doing something so finish synchronously. + mTaskAnimationManager.finishRunningRecentsAnimation(false /* toHome */, + isCanceled /* forceFinish */); } else { // The animation hasn't started yet, so insert a replacement handler into the // callbacks which immediately finishes the animation after it starts.