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

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

Put VD animators on paused list when RT stops drawing

am: c82e879e

Change-Id: I9f0202c8e69e681014253842b2a2de75d372616b
parents 744a887c 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() {