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

Commit 69115b8e authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix listeners not getting called when AVD falls back on UI thread" into nyc-mr1-dev

parents caf7d3f4 853b23d1
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);
        }
    }