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

Commit 0cf4d47a authored by Doris Liu's avatar Doris Liu Committed by Android (Google) Code Review
Browse files

Merge "Put VD animators on paused list when RT stops drawing" into nyc-mr1-dev

parents 0d8f164c c82e879e
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -242,6 +242,16 @@ public:
        mPausedVDAnimators.clear();
    }

    // Move all the animators to the paused list, and send a delayed message to notify the finished
    // listener.
    void pauseAnimators() {
        mPausedVDAnimators.insert(mRunningVDAnimators.begin(), mRunningVDAnimators.end());
        for (auto& anim : mRunningVDAnimators) {
            detachVectorDrawableAnimator(anim.get());
        }
        mRunningVDAnimators.clear();
    }

    void doAttachAnimatingNodes(AnimationContext* context) {
        for (size_t i = 0; i < mPendingAnimatingRenderNodes.size(); i++) {
            RenderNode* node = mPendingAnimatingRenderNodes[i].get();
@@ -415,8 +425,8 @@ public:
        postOnFinishedEvents();
    }

    virtual void detachAnimators() override {
        mRootNode->detachAnimators();
    virtual void pauseAnimators() override {
        mRootNode->pauseAnimators();
    }

    virtual void callOnFinished(BaseRenderNodeAnimator* animator, AnimationListener* listener) {
@@ -426,7 +436,7 @@ public:

    virtual void destroy() {
        AnimationContext::destroy();
        detachAnimators();
        mRootNode->detachAnimators();
        postOnFinishedEvents();
    }

+1 −1
Original line number Diff line number Diff line
@@ -100,7 +100,7 @@ public:

    ANDROID_API virtual void destroy();

    ANDROID_API virtual void detachAnimators() {}
    ANDROID_API virtual void pauseAnimators() {}

private:
    friend class AnimationHandle;
+1 −1
Original line number Diff line number Diff line
@@ -326,7 +326,7 @@ void CanvasContext::prepareTree(TreeInfo& info, int64_t* uiFrameInfo,

void CanvasContext::stopDrawing() {
    mRenderThread.removeFrameCallback(this);
    mAnimationContext->detachAnimators();
    mAnimationContext->pauseAnimators();
}

void CanvasContext::notifyFramePending() {