summaryrefslogtreecommitdiff
path: root/core/java/android/view/ViewRootImpl.java
diff options
context:
space:
mode:
authorHuihong Luo <huisinro@google.com>2021-05-06 10:28:12 -0700
committerHuihong Luo <huisinro@google.com>2021-05-07 08:17:26 -0700
commite76f1813721c1087ac53bd5cbe854d412e21789e (patch)
tree57d86acf692d4d4c24e04309039f67a43ef02554 /core/java/android/view/ViewRootImpl.java
parent2c389bf6ef399733d3e4ae5cea397a66462ef8da (diff)
Fix leakage of ASurfaceTransactionCallback
The callback needs to set to null when thread renderer is destroyed. Bug: 187419942 Bug: 186869429 Test: blaze test --test_strategy=local --test_arg=--device_broker_type=LOCAL_ADB_SERVER //javatests/com/google/android/testing/elizabot/internal/sanity/subscriptionleak:SubscriptionLeakTest_generic_phone_google_31_x86 Change-Id: Ic80c58f102ee5f21830542030021828f6231cc37
Diffstat (limited to 'core/java/android/view/ViewRootImpl.java')
-rw-r--r--core/java/android/view/ViewRootImpl.java6
1 files changed, 6 insertions, 0 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 0958f3fbd771..58f6d13b56ab 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -1355,6 +1355,11 @@ public final class ViewRootImpl implements ViewParent,
}
}
+ /**
+ * Register a callback to be executed when Webview overlay needs to merge a transaction.
+ * This callback will be executed on RenderThread worker thread, and released inside native code
+ * when CanvasContext is destroyed.
+ */
private void addASurfaceTransactionCallback() {
HardwareRenderer.ASurfaceTransactionCallback callback = (nativeTransactionObj,
nativeSurfaceControlObj,
@@ -7707,6 +7712,7 @@ public final class ViewRootImpl implements ViewParent,
}
}
if (mAttachInfo.mThreadedRenderer != null) {
+ addASurfaceTransactionCallback();
mAttachInfo.mThreadedRenderer.setSurfaceControl(mSurfaceControl);
}
} else {