From 44b49f070aafe8ad44efae87341121cce49ff11c Mon Sep 17 00:00:00 2001 From: John Reck Date: Fri, 25 Mar 2016 14:29:48 -0700 Subject: Add a callback for rendernode parentcount=0 Bug: 27709981 Fixes: 22565656 Change-Id: I1cb4461baf9069dc4e7ca6de10d5862578c107f4 --- libs/hwui/RenderNode.h | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) (limited to 'libs/hwui/RenderNode.h') diff --git a/libs/hwui/RenderNode.h b/libs/hwui/RenderNode.h index 838192552127..b0136cfb35bb 100644 --- a/libs/hwui/RenderNode.h +++ b/libs/hwui/RenderNode.h @@ -68,6 +68,7 @@ class SaveLayerOp; class SaveOp; class RestoreToCountOp; class TreeInfo; +class TreeObserver; namespace proto { class RenderNode; @@ -154,6 +155,14 @@ public: } } + VirtualLightRefBase* getUserContext() const { + return mUserContext.get(); + } + + void setUserContext(VirtualLightRefBase* context) { + mUserContext = context; + } + bool isPropertyFieldDirty(DirtyPropertyMask field) const { return mDirtyPropertyFields & field; } @@ -187,7 +196,7 @@ public: } ANDROID_API virtual void prepareTree(TreeInfo& info); - void destroyHardwareResources(); + void destroyHardwareResources(TreeObserver* observer); // UI thread only! ANDROID_API void addAnimator(const sp& animator); @@ -232,6 +241,12 @@ public: mPositionListener.reset(listener); } + // This is only modified in MODE_FULL, so it can be safely accessed + // on the UI thread. + ANDROID_API bool hasParents() { + return mParentCount; + } + private: typedef key_value_pair_t ZDrawRenderNodeOpPair; @@ -291,7 +306,7 @@ private: void syncProperties(); - void syncDisplayList(); + void syncDisplayList(TreeObserver* observer); void prepareTreeImpl(TreeInfo& info, bool functorsNeedLayer); void pushStagingPropertiesChanges(TreeInfo& info); @@ -302,13 +317,14 @@ private: #endif void prepareLayer(TreeInfo& info, uint32_t dirtyMask); void pushLayerUpdate(TreeInfo& info); - void deleteDisplayList(); + void deleteDisplayList(TreeObserver* observer); void damageSelf(TreeInfo& info); void incParentRefCount() { mParentCount++; } - void decParentRefCount(); + void decParentRefCount(TreeObserver* observer); String8 mName; + sp mUserContext; uint32_t mDirtyPropertyFields; RenderProperties mProperties; -- cgit v1.2.3-59-g8ed1b