summaryrefslogtreecommitdiff
path: root/libs/hwui/AnimatorManager.cpp
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2014-08-08 13:21:00 -0700
committerJohn Reck <jreck@google.com>2014-08-08 20:24:34 +0000
commita7c2ea20c43ab797bef5801530687e22e83def8f (patch)
treea5456b7d3cf8fb9f49a330bb626d490ba3de3742 /libs/hwui/AnimatorManager.cpp
parent5c8ea2c369deab75719fe7c7301846a8ef955702 (diff)
Fix damage for layers for projection receivers
Bug: 16880228 Change-Id: I59ab760a21f49cc2cac0d8936b173cff292e6114
Diffstat (limited to 'libs/hwui/AnimatorManager.cpp')
-rw-r--r--libs/hwui/AnimatorManager.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/libs/hwui/AnimatorManager.cpp b/libs/hwui/AnimatorManager.cpp
index 27b089364434..7221295a4c84 100644
--- a/libs/hwui/AnimatorManager.cpp
+++ b/libs/hwui/AnimatorManager.cpp
@@ -66,22 +66,26 @@ void AnimatorManager::pushStaging(TreeInfo& info) {
class AnimateFunctor {
public:
AnimateFunctor(RenderNode& target, TreeInfo& info)
- : mTarget(target), mInfo(info) {}
+ : dirtyMask(0), mTarget(target), mInfo(info) {}
bool operator() (BaseRenderNodeAnimator* animator) {
+ dirtyMask |= animator->dirtyMask();
bool remove = animator->animate(mInfo);
if (remove) {
animator->decStrong(0);
}
return remove;
}
+
+ uint32_t dirtyMask;
+
private:
RenderNode& mTarget;
TreeInfo& mInfo;
};
-void AnimatorManager::animate(TreeInfo& info) {
- if (!mAnimators.size()) return;
+uint32_t AnimatorManager::animate(TreeInfo& info) {
+ if (!mAnimators.size()) return 0;
// TODO: Can we target this better? For now treat it like any other staging
// property push and just damage self before and after animators are run
@@ -97,6 +101,8 @@ void AnimatorManager::animate(TreeInfo& info) {
mParent.mProperties.updateMatrix();
info.damageAccumulator->pushTransform(&mParent);
mParent.damageSelf(info);
+
+ return functor.dirtyMask;
}
} /* namespace uirenderer */