Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a0daf61d authored by Doris Liu's avatar Doris Liu Committed by android-build-merger
Browse files

Fix listeners not getting called when AVD falls back on UI thread am: 853b23d1

am: 79846f85

Change-Id: I8f8a70a35f9b6ea75ae627af8235a0fe65802551
parents a4ee0280 79846f85
Loading
Loading
Loading
Loading
+13 −4
Original line number Diff line number Diff line
@@ -244,10 +244,7 @@ public class AnimatedVectorDrawable extends Drawable implements Animatable2 {
            // to UI thread animation for AVD.
            if (!mAnimatorSet.isRunning() &&
                    ((VectorDrawableAnimatorRT) mAnimatorSet).mPendingAnimationActions.size() > 0) {
                VectorDrawableAnimatorRT oldAnim = (VectorDrawableAnimatorRT) mAnimatorSet;
                mAnimatorSet = new VectorDrawableAnimatorUI(this);
                mAnimatorSet.init(mAnimatorSetFromXml);
                oldAnim.transferPendingActions(mAnimatorSet);
                fallbackOntoUI();
            }
        }
        mAnimatorSet.onDraw(canvas);
@@ -490,10 +487,22 @@ public class AnimatedVectorDrawable extends Drawable implements Animatable2 {
                throw new UnsupportedOperationException("Cannot force Animated Vector Drawable to" +
                        " run on UI thread when the animation has started on RenderThread.");
            }
            fallbackOntoUI();
        }
    }

    private void fallbackOntoUI() {
        if (mAnimatorSet instanceof VectorDrawableAnimatorRT) {
            VectorDrawableAnimatorRT oldAnim = (VectorDrawableAnimatorRT) mAnimatorSet;
            mAnimatorSet = new VectorDrawableAnimatorUI(this);
            if (mAnimatorSetFromXml != null) {
                mAnimatorSet.init(mAnimatorSetFromXml);
            }
            // Transfer the listener from RT animator to UI animator
            if (oldAnim.mListener != null) {
                mAnimatorSet.setListener(oldAnim.mListener);
            }
            oldAnim.transferPendingActions(mAnimatorSet);
        }
    }