Merge "Fix non tailcall onTransitionFinished" into udc-dev
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionHandler.java
index 44d7e6d..a8b209f 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionHandler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionHandler.java
@@ -213,12 +213,7 @@
 
         RecentsController(IRecentsAnimationRunner listener) {
             mListener = listener;
-            mDeathHandler = () -> mExecutor.execute(() -> {
-                if (mListener == null) return;
-                if (mFinishCB != null) {
-                    finish(mWillFinishToHome, false /* leaveHint */);
-                }
-            });
+            mDeathHandler = () -> finish(mWillFinishToHome, false /* leaveHint */);
             try {
                 mListener.asBinder().linkToDeath(mDeathHandler, 0 /* flags */);
             } catch (RemoteException e) {
@@ -245,7 +240,7 @@
                 }
             }
             if (mFinishCB != null) {
-                finish(toHome, false /* userLeave */);
+                finishInner(toHome, false /* userLeave */);
             } else {
                 cleanUp();
             }
@@ -552,13 +547,13 @@
             t.apply();
             // not using the incoming anim-only surfaces
             info.releaseAnimSurfaces();
-            finishCallback.onTransitionFinished(null /* wct */, null /* wctCB */);
             if (appearedTargets == null) return;
             try {
                 mListener.onTasksAppeared(appearedTargets);
             } catch (RemoteException e) {
                 Slog.e(TAG, "Error sending appeared tasks to recents animation", e);
             }
+            finishCallback.onTransitionFinished(null /* wct */, null /* wctCB */);
         }
 
         /** For now, just set-up a jump-cut to the new activity. */