diff --git a/quickstep/src/com/android/quickstep/BaseSwipeInteractionHandler.java b/quickstep/src/com/android/quickstep/BaseSwipeInteractionHandler.java index 5bf7e4ec90..b3ebd772cc 100644 --- a/quickstep/src/com/android/quickstep/BaseSwipeInteractionHandler.java +++ b/quickstep/src/com/android/quickstep/BaseSwipeInteractionHandler.java @@ -20,13 +20,11 @@ import android.support.annotation.WorkerThread; import com.android.launcher3.states.InternalStateHandler; import com.android.quickstep.TouchConsumer.InteractionType; -import java.util.function.Consumer; - public abstract class BaseSwipeInteractionHandler extends InternalStateHandler { - protected Consumer mGestureEndCallback; + protected Runnable mGestureEndCallback; - public void setGestureEndCallback(Consumer gestureEndCallback) { + public void setGestureEndCallback(Runnable gestureEndCallback) { mGestureEndCallback = gestureEndCallback; } diff --git a/quickstep/src/com/android/quickstep/NavBarSwipeInteractionHandler.java b/quickstep/src/com/android/quickstep/NavBarSwipeInteractionHandler.java index ae70474c0d..ff7d434e7f 100644 --- a/quickstep/src/com/android/quickstep/NavBarSwipeInteractionHandler.java +++ b/quickstep/src/com/android/quickstep/NavBarSwipeInteractionHandler.java @@ -347,7 +347,7 @@ public class NavBarSwipeInteractionHandler extends BaseSwipeInteractionHandler i public void reset() { mCurrentShift.cancelAnimation(); if (mGestureEndCallback != null) { - mGestureEndCallback.accept(this); + mGestureEndCallback.run(); } } diff --git a/quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java b/quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java index 604b60b90d..786ade38bd 100644 --- a/quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java +++ b/quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java @@ -230,6 +230,9 @@ public class OtherActivityTouchConsumer extends ContextWrapper implements TouchC } private void notifyGestureStarted() { + if (mInteractionHandler == null) { + return; + } // Notify the handler that the gesture has actually started mInteractionHandler.onGestureStarted(); @@ -275,7 +278,7 @@ public class OtherActivityTouchConsumer extends ContextWrapper implements TouchC // Preload the plan mRecentsModel.loadTasks(mRunningTask.id, null); mInteractionHandler = handler; - mInteractionHandler.setGestureEndCallback(this::onFinish); + mInteractionHandler.setGestureEndCallback(mEventQueue::reset); } private Bitmap getCurrentTaskSnapshot() { @@ -314,7 +317,7 @@ public class OtherActivityTouchConsumer extends ContextWrapper implements TouchC // Preload the plan mRecentsModel.loadTasks(mRunningTask.id, null); mInteractionHandler = handler; - handler.setGestureEndCallback(this::onFinish); + handler.setGestureEndCallback(mEventQueue::reset); CountDownLatch drawWaitLock = new CountDownLatch(1); handler.setLauncherOnDrawCallback(() -> { @@ -408,8 +411,8 @@ public class OtherActivityTouchConsumer extends ContextWrapper implements TouchC // Clean up the old interaction handler if (mInteractionHandler != null) { final BaseSwipeInteractionHandler handler = mInteractionHandler; - mMainThreadExecutor.execute(handler::reset); mInteractionHandler = null; + mMainThreadExecutor.execute(handler::reset); } } @@ -450,12 +453,6 @@ public class OtherActivityTouchConsumer extends ContextWrapper implements TouchC } } - private void onFinish(BaseSwipeInteractionHandler handler) { - if (mInteractionHandler == handler) { - mInteractionHandler = null; - } - } - public void switchToMainChoreographer() { mEventQueue.setInterimChoreographer(null); } diff --git a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java index ac253c70d9..a6192c2f50 100644 --- a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java +++ b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java @@ -688,7 +688,7 @@ public class WindowTransformSwipeHandler extends BaseSwipeInteractionHandler { mCurrentShift.cancelAnimation(); if (mGestureEndCallback != null) { - mGestureEndCallback.accept(this); + mGestureEndCallback.run(); } clearReference();