diff options
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); |