diff options
| -rw-r--r-- | core/java/android/view/View.java | 4 | ||||
| -rw-r--r-- | libs/hwui/RenderNode.cpp | 5 |
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(); + } } /** |