From f8dafa14e058cdc2f408b59be7911abaceb73c47 Mon Sep 17 00:00:00 2001 From: Chris Craik Date: Tue, 22 May 2012 13:29:40 -0700 Subject: [PATCH] Add temporary functor lifetime logging bug:6535911 Change-Id: Ida5cc1def7fe1fc314317bbc5df50e1465753deb --- core/java/android/webkit/WebViewClassic.java | 12 ++++++++++-- libs/hwui/OpenGLRenderer.cpp | 3 ++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/core/java/android/webkit/WebViewClassic.java b/core/java/android/webkit/WebViewClassic.java index 7f435524ab084..74ffbe37a1f25 100644 --- a/core/java/android/webkit/WebViewClassic.java +++ b/core/java/android/webkit/WebViewClassic.java @@ -2069,6 +2069,11 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc } 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 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc 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 766a1991d1f5d..a6e786274f174 100644 --- a/libs/hwui/OpenGLRenderer.cpp +++ b/libs/hwui/OpenGLRenderer.cpp @@ -250,6 +250,7 @@ void OpenGLRenderer::resume() { } void OpenGLRenderer::detachFunctor(Functor* functor) { + ALOGD("opengl renderer %p detaching functor %p", this, functor); mFunctors.remove(functor); } @@ -302,7 +303,7 @@ status_t OpenGLRenderer::invokeFunctors(Rect& dirty) { status_t OpenGLRenderer::callDrawGLFunction(Functor* functor, Rect& dirty) { interrupt(); - detachFunctor(functor); + mFunctors.remove(functor); if (mDirtyClip) { setScissorFromClip();