diff options
author | Nader Jawad <njawad@google.com> | 2021-03-29 18:51:29 -0700 |
---|---|---|
committer | Nader Jawad <njawad@google.com> | 2021-04-06 22:03:00 -0700 |
commit | 2dc632aee35ff3ae39c23baea8d080583b5bfe1e (patch) | |
tree | 2f6d91f0603f1186ab879e07752ff1acda03a796 /libs/hwui/RenderNode.cpp | |
parent | 4563f9dfb59c74315fce5862850f971924b03ab0 (diff) |
Holepunch layers for SurfaceView
Update RenderNodeDrawable to hole punch areas into
layers created for SurfaceView
Bug: 184297961
Test: Added CTS test to SurfaceViewTests
Change-Id: I1f03a4fe34c5a8b7411ebe728ea3d4195fcd1fac
Diffstat (limited to 'libs/hwui/RenderNode.cpp')
-rw-r--r-- | libs/hwui/RenderNode.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/libs/hwui/RenderNode.cpp b/libs/hwui/RenderNode.cpp index f5b2675c7fe6..e9eae3d14760 100644 --- a/libs/hwui/RenderNode.cpp +++ b/libs/hwui/RenderNode.cpp @@ -255,15 +255,19 @@ void RenderNode::prepareTreeImpl(TreeObserver& observer, TreeInfo& info, bool fu if (mDisplayList) { info.out.hasFunctors |= mDisplayList.hasFunctor(); + mHasHolePunches = mDisplayList.hasHolePunches(); bool isDirty = mDisplayList.prepareListAndChildren( observer, info, childFunctorsNeedLayer, - [](RenderNode* child, TreeObserver& observer, TreeInfo& info, - bool functorsNeedLayer) { + [this](RenderNode* child, TreeObserver& observer, TreeInfo& info, + bool functorsNeedLayer) { child->prepareTreeImpl(observer, info, functorsNeedLayer); + mHasHolePunches |= child->hasHolePunches(); }); if (isDirty) { damageSelf(info); } + } else { + mHasHolePunches = false; } pushLayerUpdate(info); |