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

Commit 4e849178 authored by John Reck's avatar John Reck Committed by Android (Google) Code Review
Browse files

Merge "Fix race condition" into lmp-dev

parents d89c5ad3 ec845a21
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -158,9 +158,11 @@ public:

    // Marks the start of a frame, which will update the frame time and move all
    // next frame animations into the current frame
    virtual void startFrame() {
    virtual void startFrame(TreeInfo::TraversalMode mode) {
        if (mode == TreeInfo::MODE_FULL) {
            mRootNode->doAttachAnimatingNodes(this);
        AnimationContext::startFrame();
        }
        AnimationContext::startFrame(mode);
    }

    // Runs any animations still left in mCurrentFrameAnimations
+2 −3
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@

#include "Animator.h"
#include "RenderNode.h"
#include "TreeInfo.h"
#include "renderthread/TimeLord.h"

namespace android {
@@ -34,7 +33,7 @@ AnimationContext::~AnimationContext() {
}

void AnimationContext::destroy() {
    startFrame();
    startFrame(TreeInfo::MODE_RT_ONLY);
    while (mCurrentFrameAnimations.mNextHandle) {
        AnimationHandle* current = mCurrentFrameAnimations.mNextHandle;
        AnimatorManager& animators = current->mRenderNode->animators();
@@ -55,7 +54,7 @@ void AnimationContext::addAnimationHandle(AnimationHandle* handle) {
    handle->insertAfter(&mNextFrameAnimations);
}

void AnimationContext::startFrame() {
void AnimationContext::startFrame(TreeInfo::TraversalMode mode) {
    LOG_ALWAYS_FATAL_IF(mCurrentFrameAnimations.mNextHandle,
            "Missed running animations last frame!");
    AnimationHandle* head = mNextFrameAnimations.mNextHandle;
+2 −2
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@
#include <utils/RefBase.h>
#include <utils/StrongPointer.h>

#include "TreeInfo.h"
#include "renderthread/TimeLord.h"
#include "utils/Macros.h"

@@ -30,7 +31,6 @@ class AnimationContext;
class AnimationListener;
class BaseRenderNodeAnimator;
class RenderNode;
class TreeInfo;

/*
 * AnimationHandle is several classes merged into one.
@@ -90,7 +90,7 @@ public:

    // Marks the start of a frame, which will update the frame time and move all
    // next frame animations into the current frame
    ANDROID_API virtual void startFrame();
    ANDROID_API virtual void startFrame(TreeInfo::TraversalMode mode);

    // Runs any animations still left in mCurrentFrameAnimations that were not run
    // as part of the standard RenderNode:prepareTree pass.
+1 −1
Original line number Diff line number Diff line
@@ -150,7 +150,7 @@ void CanvasContext::prepareTree(TreeInfo& info) {
    if (mPrefetechedLayers.size() && info.mode == TreeInfo::MODE_FULL) {
        info.canvasContext = this;
    }
    mAnimationContext->startFrame();
    mAnimationContext->startFrame(info.mode);
    mRootRenderNode->prepareTree(info);
    mAnimationContext->runRemainingAnimations(info);