Add temporary functor lifetime logging

bug:6535911

Change-Id: Ida5cc1def7fe1fc314317bbc5df50e1465753deb
diff --git a/core/java/android/webkit/WebViewClassic.java b/core/java/android/webkit/WebViewClassic.java
index 7f43552..74ffbe3 100644
--- a/core/java/android/webkit/WebViewClassic.java
+++ b/core/java/android/webkit/WebViewClassic.java
@@ -2069,6 +2069,11 @@
     }
 
     private void destroyImpl() {
+        int drawGLFunction = nativeGetDrawGLFunction(mNativeClass);
+        ViewRootImpl viewRoot = mWebView.getViewRootImpl();
+        Log.d(LOGTAG, String.format("destroyImpl, functor %x, viewroot == null %b, isHWAccel %b",
+                                    drawGLFunction, (viewRoot == null),
+                                    mWebView.isHardwareAccelerated()));
         mCallbackProxy.blockMessages();
         clearHelpers();
         if (mListBoxDialog != null) {
@@ -5296,9 +5301,12 @@
 
         updateHwAccelerated();
 
+        int drawGLFunction = nativeGetDrawGLFunction(mNativeClass);
+        ViewRootImpl viewRoot = mWebView.getViewRootImpl();
+        Log.d(LOGTAG, String.format("destroyImpl, functor %x, viewroot == null %b, isHWAccel %b",
+                                    drawGLFunction, (viewRoot == null),
+                                    mWebView.isHardwareAccelerated()));
         if (mWebView.isHardwareAccelerated()) {
-            int drawGLFunction = nativeGetDrawGLFunction(mNativeClass);
-            ViewRootImpl viewRoot = mWebView.getViewRootImpl();
             if (drawGLFunction != 0 && viewRoot != null) {
                 viewRoot.detachFunctor(drawGLFunction);
             }
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index 766a199..a6e7862 100644
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -250,6 +250,7 @@
 }
 
 void OpenGLRenderer::detachFunctor(Functor* functor) {
+    ALOGD("opengl renderer %p detaching functor %p", this, functor);
     mFunctors.remove(functor);
 }
 
@@ -302,7 +303,7 @@
 
 status_t OpenGLRenderer::callDrawGLFunction(Functor* functor, Rect& dirty) {
     interrupt();
-    detachFunctor(functor);
+    mFunctors.remove(functor);
 
     if (mDirtyClip) {
         setScissorFromClip();