summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author John Reck <jreck@google.com> 2016-02-29 13:40:52 -0800
committer John Reck <jreck@google.com> 2016-02-29 13:40:52 -0800
commit9e066cbf59c3e7724eb6c6610ede5697835f65e6 (patch)
tree553c01d76518c2f8da08a1b56a81618836e6076b
parent342006e91990f59b2e71c76a7d8589f7de571246 (diff)
Fix dirtyMask in AnimateFunctor
Bug: 27313379 Change-Id: I0c0cffe7e1940914f0143714643ede539b86216f
-rw-r--r--libs/hwui/AnimatorManager.cpp14
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) {