From e76f1813721c1087ac53bd5cbe854d412e21789e Mon Sep 17 00:00:00 2001 From: Huihong Luo Date: Thu, 6 May 2021 10:28:12 -0700 Subject: 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 --- core/java/android/view/ViewRootImpl.java | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'core/java/android/view/ViewRootImpl.java') 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 { -- cgit v1.2.3