summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/view/View.java4
-rw-r--r--libs/hwui/RenderNode.cpp5
2 files changed, 9 insertions, 0 deletions
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index fa86c74139ad..d305f4dc7062 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -12889,6 +12889,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
mPrivateFlags |= PFLAG_DIRTY;
+ // Release any resources in-case we don't end up drawing again
+ // as anything cached is no longer valid
+ resetDisplayList();
+
if (invalidateCache) {
mPrivateFlags |= PFLAG_INVALIDATED;
mPrivateFlags &= ~PFLAG_DRAWING_CACHE_VALID;
diff --git a/libs/hwui/RenderNode.cpp b/libs/hwui/RenderNode.cpp
index 351fbaa86a2a..df85cc61ff9b 100644
--- a/libs/hwui/RenderNode.cpp
+++ b/libs/hwui/RenderNode.cpp
@@ -79,6 +79,11 @@ void RenderNode::setStagingDisplayList(DisplayList* displayList) {
mNeedsDisplayListSync = true;
delete mStagingDisplayList;
mStagingDisplayList = displayList;
+ // If mParentCount == 0 we are the sole reference to this RenderNode,
+ // so immediately free the old display list
+ if (!mParentCount && !mStagingDisplayList) {
+ deleteDisplayList();
+ }
}
/**