Revert "Fix destroyHardwareResources"

This reverts commit bac48c4d0c6f71f67074a430cd365ea2e15924b8.

Change-Id: Iba8b729d5e91ca31976fc2bdf9c1dd5fdb19de9a
diff --git a/core/java/android/view/ThreadedRenderer.java b/core/java/android/view/ThreadedRenderer.java
index fa4564e..57d1beb 100644
--- a/core/java/android/view/ThreadedRenderer.java
+++ b/core/java/android/view/ThreadedRenderer.java
@@ -127,8 +127,6 @@
     @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);
     }
 
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 706fb1c..f1a0913 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -13625,7 +13625,9 @@
      * @hide
      */
     protected void destroyHardwareResources() {
-        resetDisplayList();
+        // Intentionally empty. RenderNode's lifecycle is now fully managed
+        // by the hardware renderer.
+        // However some subclasses (eg, WebView, TextureView) still need this signal
     }
 
     /**
diff --git a/libs/hwui/RenderNode.cpp b/libs/hwui/RenderNode.cpp
index 3cf625f..89105ea 100644
--- a/libs/hwui/RenderNode.cpp
+++ b/libs/hwui/RenderNode.cpp
@@ -211,8 +211,7 @@
         // This will also release the hardware layer if we have one as
         // isRenderable() will return false, thus causing pushLayerUpdate
         // to recycle the hardware layer
-        LOG_ALWAYS_FATAL_IF(mStagingDisplayListData || (mDisplayListData && !mNeedsDisplayListDataSync),
-                "View.destroyHardwareResources wasn't called!");
+        setStagingDisplayList(NULL);
         break;
     }
 
@@ -261,11 +260,7 @@
         mNeedsDisplayListDataSync = false;
         // Do a push pass on the old tree to handle freeing DisplayListData
         // that are no longer used
-        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);
+        TreeInfo oldTreeInfo(TreeInfo::MODE_MAYBE_DETACHING, info);
         prepareSubTree(oldTreeInfo, mDisplayListData);
         delete mDisplayListData;
         mDisplayListData = mStagingDisplayListData;