diff options
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/view/ThreadedRenderer.java | 11 | ||||
| -rw-r--r-- | core/java/android/view/View.java | 12 | ||||
| -rw-r--r-- | core/java/android/view/ViewGroup.java | 10 |
3 files changed, 13 insertions, 20 deletions
diff --git a/core/java/android/view/ThreadedRenderer.java b/core/java/android/view/ThreadedRenderer.java index b0826a8e3f70..f3ebcb4b326b 100644 --- a/core/java/android/view/ThreadedRenderer.java +++ b/core/java/android/view/ThreadedRenderer.java @@ -360,7 +360,6 @@ public final class ThreadedRenderer { void destroy() { mInitialized = false; updateEnabledState(null); - mRootNode.discardDisplayList(); nDestroy(mNativeProxy, mRootNode.mNativeRenderNode); } @@ -492,12 +491,20 @@ public final class ThreadedRenderer { */ void destroyHardwareResources(View view) { destroyResources(view); - mRootNode.discardDisplayList(); nDestroyHardwareResources(mNativeProxy); } private static void destroyResources(View view) { view.destroyHardwareResources(); + + if (view instanceof ViewGroup) { + ViewGroup group = (ViewGroup) view; + + int count = group.getChildCount(); + for (int i = 0; i < count; i++) { + destroyResources(group.getChildAt(i)); + } + } } /** diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 623b9ce742d3..9d1af5027f72 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -16642,12 +16642,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback, // safe to free its copy of the display list as it knows that we will // push an updated DisplayList if we try to draw again resetDisplayList(); - if (mOverlay != null) { - mOverlay.getOverlayView().destroyHardwareResources(); - } - if (mGhostView != null) { - mGhostView.destroyHardwareResources(); - } } /** @@ -16818,9 +16812,11 @@ public class View implements Drawable.Callback, KeyEvent.Callback, } private void resetDisplayList() { - mRenderNode.discardDisplayList(); + if (mRenderNode.isValid()) { + mRenderNode.discardDisplayList(); + } - if (mBackgroundRenderNode != null) { + if (mBackgroundRenderNode != null && mBackgroundRenderNode.isValid()) { mBackgroundRenderNode.discardDisplayList(); } } diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index 269dd775321b..1b42a90f4bcc 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -3449,16 +3449,6 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager super.dispatchDetachedFromWindow(); } - /** @hide */ - @Override - protected void destroyHardwareResources() { - super.destroyHardwareResources(); - int count = getChildCount(); - for (int i = 0; i < count; i++) { - getChildAt(i).destroyHardwareResources(); - } - } - /** * @hide */ |
