Index: android_webview/java/src/org/chromium/android_webview/AwGLFunctor.java |
diff --git a/android_webview/java/src/org/chromium/android_webview/AwGLFunctor.java b/android_webview/java/src/org/chromium/android_webview/AwGLFunctor.java |
index e43b840fbf980e8ebd1a83b5794acca5899a77fc..be319dd1a52467c56e2c3cd70214a46bb1952187 100644 |
--- a/android_webview/java/src/org/chromium/android_webview/AwGLFunctor.java |
+++ b/android_webview/java/src/org/chromium/android_webview/AwGLFunctor.java |
@@ -33,7 +33,8 @@ class AwGLFunctor { |
} |
private final long mNativeAwGLFunctor; |
- private final DestroyRunnable mDestroyRunnable; |
+ // Same gc-life time as this, but does not reference any members like |mContainerView|. |
+ private final Object mLifetimeObject; |
private final CleanupReference mCleanupReference; |
private final AwContents.NativeGLDelegate mNativeGLDelegate; |
private final ViewGroup mContainerView; |
@@ -41,8 +42,9 @@ class AwGLFunctor { |
public AwGLFunctor(AwContents.NativeGLDelegate nativeGLDelegate, ViewGroup containerView) { |
mNativeAwGLFunctor = nativeCreate(this); |
- mDestroyRunnable = new DestroyRunnable(mNativeAwGLFunctor); |
- mCleanupReference = new CleanupReference(mDestroyRunnable, mDestroyRunnable); |
+ mLifetimeObject = new Object(); |
+ mCleanupReference = |
+ new CleanupReference(mLifetimeObject, new DestroyRunnable(mNativeAwGLFunctor)); |
mNativeGLDelegate = nativeGLDelegate; |
mContainerView = containerView; |
if (mNativeGLDelegate.supportsDrawGLFunctorReleasedCallback()) { |
@@ -67,7 +69,7 @@ class AwGLFunctor { |
} |
public Object getNativeLifetimeObject() { |
- return mDestroyRunnable; |
+ return mLifetimeObject; |
} |
public boolean requestDrawGLForCanvas(Canvas canvas) { |