From 2dc632aee35ff3ae39c23baea8d080583b5bfe1e Mon Sep 17 00:00:00 2001 From: Nader Jawad Date: Mon, 29 Mar 2021 18:51:29 -0700 Subject: 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 --- libs/hwui/RenderNode.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'libs/hwui/RenderNode.cpp') 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); -- cgit v1.2.3-59-g8ed1b