summaryrefslogtreecommitdiff
path: root/libs/hwui/RenderNode.cpp
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2017-01-30 10:15:48 -0800
committerJohn Reck <jreck@google.com>2017-01-30 13:29:26 -0800
commit3afd63778e401651a7a6fd721d6d795690916ab8 (patch)
treed9b6cf4a86e9f8473f29cab0c60b396194075933 /libs/hwui/RenderNode.cpp
parentfda076a12ed641d5ab53933c4aac9e8063c580d0 (diff)
Switch how destroyHardwareResources works
destroyHardwareResources will now only force-destroy the specific node it was called on, which are only ever the root nodes. Rely on onRemovedFromTree() to clean up resources for all other nodes. Bug: 34736819 Test: RenderNode.multiTreeValidity passes, manually verified fixes b/34736819 Change-Id: I1c275ad6a98b63bf50f265602f09bffe3e1f169b
Diffstat (limited to 'libs/hwui/RenderNode.cpp')
-rw-r--r--libs/hwui/RenderNode.cpp16
1 files changed, 4 insertions, 12 deletions
diff --git a/libs/hwui/RenderNode.cpp b/libs/hwui/RenderNode.cpp
index 7d8f0462920a..f1c8232760e1 100644
--- a/libs/hwui/RenderNode.cpp
+++ b/libs/hwui/RenderNode.cpp
@@ -406,21 +406,13 @@ void RenderNode::deleteDisplayList(TreeObserver& observer, TreeInfo* info) {
}
void RenderNode::destroyHardwareResources(TreeInfo* info) {
- ImmediateRemoved observer(info);
- destroyHardwareResourcesImpl(observer, info);
-}
-
-void RenderNode::destroyHardwareResourcesImpl(TreeObserver& observer, TreeInfo* info) {
if (hasLayer()) {
renderthread::CanvasContext::destroyLayer(this);
}
- if (mDisplayList) {
- mDisplayList->updateChildren([&observer, info](RenderNode* child) {
- child->destroyHardwareResourcesImpl(observer, info);
- });
- setStagingDisplayList(nullptr);
- deleteDisplayList(observer, info);
- }
+ setStagingDisplayList(nullptr);
+
+ ImmediateRemoved observer(info);
+ deleteDisplayList(observer, info);
}
void RenderNode::destroyLayers() {