Skip Launcher opening animation if its not in the set of opening apps.

Bug: 72811741
Change-Id: I81d71fac9908c375052567cda43dffa92cd3d9f6
diff --git a/quickstep/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java b/quickstep/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java
index 62e76d8..71c5523 100644
--- a/quickstep/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java
+++ b/quickstep/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java
@@ -20,6 +20,7 @@
 import static com.android.systemui.shared.recents.utilities.Utilities.getNextFrameNumber;
 import static com.android.systemui.shared.recents.utilities.Utilities.getSurface;
 import static com.android.systemui.shared.recents.utilities.Utilities.postAtFrontOfQueueAsynchronously;
+import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_OPENING;
 
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
@@ -33,7 +34,6 @@
 import android.graphics.Bitmap;
 import android.graphics.Matrix;
 import android.graphics.Rect;
-import android.media.midi.MidiManager.OnDeviceOpenedListener;
 import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
@@ -381,7 +381,7 @@
 
                 TransactionCompat t = new TransactionCompat();
                 for (RemoteAnimationTargetCompat target : targets) {
-                    if (target.mode == RemoteAnimationTargetCompat.MODE_OPENING) {
+                    if (target.mode == MODE_OPENING) {
                         t.setAlpha(target.leash, alpha);
 
                         // TODO: This isn't correct at the beginning of the animation, but better
@@ -424,6 +424,16 @@
         }
     }
 
+    private boolean isLauncherInSetOfOpeningTargets(RemoteAnimationTargetCompat[] targets) {
+        int launcherTaskId = mLauncher.getTaskId();
+        for (RemoteAnimationTargetCompat target : targets) {
+            if (target.mode == MODE_OPENING && target.taskId == launcherTaskId) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     /**
      * @return Runner that plays when user goes to Launcher
      *         ie. pressing home, swiping up from nav bar.
@@ -435,9 +445,12 @@
                                          Runnable finishedCallback) {
                 Handler handler = mLauncher.getWindow().getDecorView().getHandler();
                 postAtFrontOfQueueAsynchronously(handler, () -> {
-                    if (Utilities.getPrefs(mLauncher).getBoolean("pref_use_screenshot_animation",
-                            true) && mLauncher.isInState(LauncherState.OVERVIEW)) {
-                        // We use a separate transition for Overview mode.
+                    if ((Utilities.getPrefs(mLauncher).getBoolean("pref_use_screenshot_animation",
+                            true) && mLauncher.isInState(LauncherState.OVERVIEW))
+                            || !isLauncherInSetOfOpeningTargets(targets)) {
+                        // We use a separate transition for Overview mode. And we can skip the
+                        // animation in cases where Launcher is not in the set of opening targets.
+                        // This can happen when Launcher is already visible. ie. Closing a dialog.
                         setCurrentAnimator(null);
                         finishedCallback.run();
                         return;