diff options
Diffstat (limited to 'libs')
-rw-r--r-- | libs/hwui/Animator.cpp | 4 | ||||
-rw-r--r-- | libs/hwui/Animator.h | 3 |
2 files changed, 3 insertions, 4 deletions
diff --git a/libs/hwui/Animator.cpp b/libs/hwui/Animator.cpp index b80f7e9..eff3011 100644 --- a/libs/hwui/Animator.cpp +++ b/libs/hwui/Animator.cpp @@ -63,7 +63,6 @@ void BaseRenderNodeAnimator::setStartValue(float value) { void BaseRenderNodeAnimator::setupStartValueIfNecessary(RenderNode* target, TreeInfo& info) { if (mPlayState == NEEDS_START) { setStartValue(getValue(target)); - mPlayState = PENDING; } } @@ -154,7 +153,8 @@ RenderPropertyAnimator::RenderPropertyAnimator(RenderProperty property, float fi } void RenderPropertyAnimator::onAttached(RenderNode* target) { - if (target->isPropertyFieldDirty(mPropertyAccess->dirtyMask)) { + if (mPlayState == NEEDS_START + && target->isPropertyFieldDirty(mPropertyAccess->dirtyMask)) { setStartValue((target->stagingProperties().*mPropertyAccess->getter)()); } (target->mutateStagingProperties().*mPropertyAccess->setter)(finalValue()); diff --git a/libs/hwui/Animator.h b/libs/hwui/Animator.h index 7741617..a0c7c55 100644 --- a/libs/hwui/Animator.h +++ b/libs/hwui/Animator.h @@ -41,6 +41,7 @@ protected: class BaseRenderNodeAnimator : public VirtualLightRefBase { PREVENT_COPY_AND_ASSIGN(BaseRenderNodeAnimator); public: + ANDROID_API void setStartValue(float value); ANDROID_API void setInterpolator(Interpolator* interpolator); ANDROID_API void setDuration(nsecs_t durationInMs); ANDROID_API nsecs_t duration() { return mDuration; } @@ -64,11 +65,9 @@ protected: BaseRenderNodeAnimator(float finalValue); virtual ~BaseRenderNodeAnimator(); - void setStartValue(float value); virtual float getValue(RenderNode* target) const = 0; virtual void setValue(RenderNode* target, float value) = 0; -private: void callOnFinishedListener(TreeInfo& info); enum PlayState { |