am fa097eea: am 4a94f088: Merge "Fix race condition" into lmp-dev
* commit 'fa097eea8620158eef3592376afbcadca39b2e74': Fix race condition
This commit is contained in:
@@ -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() {
|
||||
mRootNode->doAttachAnimatingNodes(this);
|
||||
AnimationContext::startFrame();
|
||||
virtual void startFrame(TreeInfo::TraversalMode mode) {
|
||||
if (mode == TreeInfo::MODE_FULL) {
|
||||
mRootNode->doAttachAnimatingNodes(this);
|
||||
}
|
||||
AnimationContext::startFrame(mode);
|
||||
}
|
||||
|
||||
// Runs any animations still left in mCurrentFrameAnimations
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user