Fixing stateManager not correctly deduping existing animations

Bug: 79251716
Change-Id: I40c3ebf0ec4d49aa1fe1948ad3d83eb87cc1c5f1
diff --git a/src/com/android/launcher3/LauncherStateManager.java b/src/com/android/launcher3/LauncherStateManager.java
index 7f25301..1b9ac21 100644
--- a/src/com/android/launcher3/LauncherStateManager.java
+++ b/src/com/android/launcher3/LauncherStateManager.java
@@ -374,7 +374,18 @@
      */
     public void setCurrentAnimation(AnimatorSet anim, Animator... childAnimations) {
         for (Animator childAnim : childAnimations) {
-            if (childAnim != null && mConfig.mCurrentAnimation == childAnim) {
+            if (childAnim == null) {
+                continue;
+            }
+            if (mConfig.playbackController != null
+                    && mConfig.playbackController.getTarget() == childAnim) {
+                if (mConfig.mCurrentAnimation != null) {
+                    mConfig.mCurrentAnimation.removeListener(mConfig);
+                    mConfig.mCurrentAnimation = null;
+                }
+                mConfig.playbackController = null;
+                break;
+            } else if (mConfig.mCurrentAnimation == childAnim) {
                 mConfig.mCurrentAnimation.removeListener(mConfig);
                 mConfig.mCurrentAnimation = null;
                 break;