diff options
author | 2016-02-29 13:40:52 -0800 | |
---|---|---|
committer | 2016-02-29 13:40:52 -0800 | |
commit | 9e066cbf59c3e7724eb6c6610ede5697835f65e6 (patch) | |
tree | 553c01d76518c2f8da08a1b56a81618836e6076b | |
parent | 342006e91990f59b2e71c76a7d8589f7de571246 (diff) |
Fix dirtyMask in AnimateFunctor
Bug: 27313379
Change-Id: I0c0cffe7e1940914f0143714643ede539b86216f
-rw-r--r-- | libs/hwui/AnimatorManager.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/libs/hwui/AnimatorManager.cpp b/libs/hwui/AnimatorManager.cpp index 2198fcc95fe5..f170e9cda8af 100644 --- a/libs/hwui/AnimatorManager.cpp +++ b/libs/hwui/AnimatorManager.cpp @@ -95,11 +95,11 @@ void AnimatorManager::onAnimatorTargetChanged(BaseRenderNodeAnimator* animator) class AnimateFunctor { public: - AnimateFunctor(TreeInfo& info, AnimationContext& context) - : dirtyMask(0), mInfo(info), mContext(context) {} + AnimateFunctor(TreeInfo& info, AnimationContext& context, uint32_t* outDirtyMask) + : mInfo(info), mContext(context), mDirtyMask(outDirtyMask) {} bool operator() (sp<BaseRenderNodeAnimator>& animator) { - dirtyMask |= animator->dirtyMask(); + *mDirtyMask |= animator->dirtyMask(); bool remove = animator->animate(mContext); if (remove) { animator->detach(); @@ -114,11 +114,10 @@ public: return remove; } - uint32_t dirtyMask; - private: TreeInfo& mInfo; AnimationContext& mContext; + uint32_t* mDirtyMask; }; uint32_t AnimatorManager::animate(TreeInfo& info) { @@ -143,12 +142,13 @@ void AnimatorManager::animateNoDamage(TreeInfo& info) { } uint32_t AnimatorManager::animateCommon(TreeInfo& info) { - AnimateFunctor functor(info, mAnimationHandle->context()); + uint32_t dirtyMask; + AnimateFunctor functor(info, mAnimationHandle->context(), &dirtyMask); auto newEnd = std::remove_if(mAnimators.begin(), mAnimators.end(), functor); mAnimators.erase(newEnd, mAnimators.end()); mAnimationHandle->notifyAnimationsRan(); mParent.mProperties.updateMatrix(); - return functor.dirtyMask; + return dirtyMask; } static void endStagingAnimator(sp<BaseRenderNodeAnimator>& animator) { |