Merge "Don't run finish callback until we actually finish" into ub-launcher3-rvc-dev
diff --git a/quickstep/src/com/android/quickstep/RecentsAnimationController.java b/quickstep/src/com/android/quickstep/RecentsAnimationController.java
index 76a81eb..b0a3cd2 100644
--- a/quickstep/src/com/android/quickstep/RecentsAnimationController.java
+++ b/quickstep/src/com/android/quickstep/RecentsAnimationController.java
@@ -29,6 +29,7 @@
 import android.view.MotionEvent;
 
 import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 import androidx.annotation.UiThread;
 
 import com.android.launcher3.util.Preconditions;
@@ -58,6 +59,7 @@
     private boolean mSplitScreenMinimized = false;
     private boolean mTouchInProgress;
     private boolean mFinishPending;
+    private @Nullable Runnable mFinishPendingCallback;
 
     public RecentsAnimationController(RecentsAnimationControllerCompat controller,
             boolean allowMinimizeSplitScreen,
@@ -165,10 +167,7 @@
         } else {
             if (mTouchInProgress) {
                 mFinishPending = true;
-                // Execute the callback
-                if (onFinishComplete != null) {
-                    onFinishComplete.run();
-                }
+                mFinishPendingCallback = onFinishComplete;
             } else {
                 finishAndClear(true, onFinishComplete, sendUserLeaveHint);
             }
@@ -265,7 +264,9 @@
             mTouchInProgress = false;
             if (mFinishPending) {
                 mFinishPending = false;
-                finishAndClear(true /* toRecents */, null, false /* sendUserLeaveHint */);
+                finishAndClear(true /* toRecents */, mFinishPendingCallback,
+                        false /* sendUserLeaveHint */);
+                mFinishPendingCallback = null;
             }
         }
         if (mInputConsumer != null) {