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;