Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f410f813 authored by Huihong Luo's avatar Huihong Luo Committed by Android (Google) Code Review
Browse files

Merge "Fix leakage of ASurfaceTransactionCallback" into sc-dev

parents 23f813e8 e76f1813
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -1356,6 +1356,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,
@@ -7710,6 +7715,7 @@ public final class ViewRootImpl implements ViewParent,
                }
            }
            if (mAttachInfo.mThreadedRenderer != null) {
                addASurfaceTransactionCallback();
                mAttachInfo.mThreadedRenderer.setSurfaceControl(mSurfaceControl);
            }
        } else {
+4 −0
Original line number Diff line number Diff line
@@ -195,6 +195,10 @@ void CanvasContext::setSurfaceControl(ASurfaceControl* surfaceControl) {

    auto funcs = mRenderThread.getASurfaceControlFunctions();

    if (surfaceControl == nullptr) {
        setASurfaceTransactionCallback(nullptr);
    }

    if (mSurfaceControl != nullptr) {
        funcs.unregisterListenerFunc(this, &onSurfaceStatsAvailable);
        funcs.releaseFunc(mSurfaceControl);