Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1287)

Unified Diff: android_webview/java/src/org/chromium/android_webview/AwContents.java

Issue 263903008: aw: Fix detach and destroy interaction (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | android_webview/java/src/org/chromium/android_webview/AwSettings.java » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: android_webview/java/src/org/chromium/android_webview/AwContents.java
diff --git a/android_webview/java/src/org/chromium/android_webview/AwContents.java b/android_webview/java/src/org/chromium/android_webview/AwContents.java
index f64d9657ce137024c51ffe124e9772d8f7e9341d..6d57961b5dd4f511d458b3bb45cfa9d0e50aead3 100644
--- a/android_webview/java/src/org/chromium/android_webview/AwContents.java
+++ b/android_webview/java/src/org/chromium/android_webview/AwContents.java
@@ -61,9 +61,7 @@ import java.io.File;
import java.lang.annotation.Annotation;
import java.net.MalformedURLException;
import java.net.URL;
-import java.util.ArrayList;
import java.util.HashMap;
-import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.concurrent.Callable;
@@ -240,11 +238,6 @@ public class AwContents {
// (ie before it is destroyed).
private CleanupReference mCleanupReference;
- // A list of references to native pointers where the Java counterpart has been
- // destroyed, but are held here because they are waiting for onDetachFromWindow
- // to release GL resources. This is cleared inside onDetachFromWindow.
- private List<CleanupReference> mPendingDetachCleanupReferences;
-
//--------------------------------------------------------------------------------------------
private class IoThreadClientImpl implements AwContentsIoThreadClient {
// All methods are called on the IO thread.
@@ -643,13 +636,17 @@ public class AwContents {
}
/**
- * Deletes the native counterpart of this object. Normally happens immediately,
- * but maybe deferred until the appropriate time for GL resource cleanup. Either way
- * this is transparent to the caller: after this function returns the object is
- * effectively dead and methods are no-ops.
+ * Deletes the native counterpart of this object.
*/
public void destroy() {
if (mCleanupReference != null) {
+ assert mNativeAwContents != 0;
+ // If we are attached, we have to call native detach to clean up
+ // hardware resources.
+ if (mIsAttachedToWindow) {
+ nativeOnDetachedFromWindow(mNativeAwContents);
+ }
+
// We explicitly do not null out the mContentViewCore reference here
// because ContentViewCore already has code to deal with the case
// methods are called on it after it's been destroyed, and other
@@ -657,17 +654,7 @@ public class AwContents {
mContentViewCore.destroy();
mNativeAwContents = 0;
- // We cannot destroy immediately if we are still attached to the window.
- // Instead if we make sure to null out the native pointer so there is no more native
- // calls, and delay the actual destroy until onDetachedFromWindow.
- if (mIsAttachedToWindow) {
- if (mPendingDetachCleanupReferences == null) {
- mPendingDetachCleanupReferences = new ArrayList<CleanupReference>();
- }
- mPendingDetachCleanupReferences.add(mCleanupReference);
- } else {
- mCleanupReference.cleanupNow();
- }
+ mCleanupReference.cleanupNow();
mCleanupReference = null;
}
@@ -1627,13 +1614,6 @@ public class AwContents {
}
mScrollAccessibilityHelper.removePostedCallbacks();
-
- if (mPendingDetachCleanupReferences != null) {
- for (int i = 0; i < mPendingDetachCleanupReferences.size(); ++i) {
- mPendingDetachCleanupReferences.get(i).cleanupNow();
- }
- mPendingDetachCleanupReferences = null;
- }
}
/**
« no previous file with comments | « no previous file | android_webview/java/src/org/chromium/android_webview/AwSettings.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698