Loading core/java/android/view/ThreadedRenderer.java +2 −0 Original line number Diff line number Diff line Loading @@ -127,6 +127,8 @@ public class ThreadedRenderer extends HardwareRenderer { @Override void destroyHardwareResources(View view) { destroyResources(view); // mRootNode belongs to us and not a view, so we need to destroy it mRootNode.destroyDisplayListData(); nDestroyHardwareResources(mNativeProxy); } Loading core/java/android/view/View.java +1 −3 Original line number Diff line number Diff line Loading @@ -13625,9 +13625,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * @hide */ protected void destroyHardwareResources() { // Intentionally empty. RenderNode's lifecycle is now fully managed // by the hardware renderer. // However some subclasses (eg, WebView, TextureView) still need this signal resetDisplayList(); } /** libs/hwui/RenderNode.cpp +7 −2 Original line number Diff line number Diff line Loading @@ -211,7 +211,8 @@ void RenderNode::prepareTreeImpl(TreeInfo& info) { // This will also release the hardware layer if we have one as // isRenderable() will return false, thus causing pushLayerUpdate // to recycle the hardware layer setStagingDisplayList(NULL); LOG_ALWAYS_FATAL_IF(mStagingDisplayListData || (mDisplayListData && !mNeedsDisplayListDataSync), "View.destroyHardwareResources wasn't called!"); break; } Loading Loading @@ -260,7 +261,11 @@ void RenderNode::pushStagingDisplayListChanges(TreeInfo& info) { mNeedsDisplayListDataSync = false; // Do a push pass on the old tree to handle freeing DisplayListData // that are no longer used TreeInfo oldTreeInfo(TreeInfo::MODE_MAYBE_DETACHING, info); TreeInfo::TraversalMode mode = TreeInfo::MODE_MAYBE_DETACHING; if (CC_UNLIKELY(info.mode == TreeInfo::MODE_DESTROY_RESOURCES)) { mode = TreeInfo::MODE_DESTROY_RESOURCES; } TreeInfo oldTreeInfo(mode, info); prepareSubTree(oldTreeInfo, mDisplayListData); delete mDisplayListData; mDisplayListData = mStagingDisplayListData; Loading Loading
core/java/android/view/ThreadedRenderer.java +2 −0 Original line number Diff line number Diff line Loading @@ -127,6 +127,8 @@ public class ThreadedRenderer extends HardwareRenderer { @Override void destroyHardwareResources(View view) { destroyResources(view); // mRootNode belongs to us and not a view, so we need to destroy it mRootNode.destroyDisplayListData(); nDestroyHardwareResources(mNativeProxy); } Loading
core/java/android/view/View.java +1 −3 Original line number Diff line number Diff line Loading @@ -13625,9 +13625,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * @hide */ protected void destroyHardwareResources() { // Intentionally empty. RenderNode's lifecycle is now fully managed // by the hardware renderer. // However some subclasses (eg, WebView, TextureView) still need this signal resetDisplayList(); } /**
libs/hwui/RenderNode.cpp +7 −2 Original line number Diff line number Diff line Loading @@ -211,7 +211,8 @@ void RenderNode::prepareTreeImpl(TreeInfo& info) { // This will also release the hardware layer if we have one as // isRenderable() will return false, thus causing pushLayerUpdate // to recycle the hardware layer setStagingDisplayList(NULL); LOG_ALWAYS_FATAL_IF(mStagingDisplayListData || (mDisplayListData && !mNeedsDisplayListDataSync), "View.destroyHardwareResources wasn't called!"); break; } Loading Loading @@ -260,7 +261,11 @@ void RenderNode::pushStagingDisplayListChanges(TreeInfo& info) { mNeedsDisplayListDataSync = false; // Do a push pass on the old tree to handle freeing DisplayListData // that are no longer used TreeInfo oldTreeInfo(TreeInfo::MODE_MAYBE_DETACHING, info); TreeInfo::TraversalMode mode = TreeInfo::MODE_MAYBE_DETACHING; if (CC_UNLIKELY(info.mode == TreeInfo::MODE_DESTROY_RESOURCES)) { mode = TreeInfo::MODE_DESTROY_RESOURCES; } TreeInfo oldTreeInfo(mode, info); prepareSubTree(oldTreeInfo, mDisplayListData); delete mDisplayListData; mDisplayListData = mStagingDisplayListData; Loading