Merge "Fix leakage of ASurfaceTransactionCallback" into sc-dev
This commit is contained in:
@@ -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() {
|
private void addASurfaceTransactionCallback() {
|
||||||
HardwareRenderer.ASurfaceTransactionCallback callback = (nativeTransactionObj,
|
HardwareRenderer.ASurfaceTransactionCallback callback = (nativeTransactionObj,
|
||||||
nativeSurfaceControlObj,
|
nativeSurfaceControlObj,
|
||||||
@@ -7710,6 +7715,7 @@ public final class ViewRootImpl implements ViewParent,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (mAttachInfo.mThreadedRenderer != null) {
|
if (mAttachInfo.mThreadedRenderer != null) {
|
||||||
|
addASurfaceTransactionCallback();
|
||||||
mAttachInfo.mThreadedRenderer.setSurfaceControl(mSurfaceControl);
|
mAttachInfo.mThreadedRenderer.setSurfaceControl(mSurfaceControl);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -195,6 +195,10 @@ void CanvasContext::setSurfaceControl(ASurfaceControl* surfaceControl) {
|
|||||||
|
|
||||||
auto funcs = mRenderThread.getASurfaceControlFunctions();
|
auto funcs = mRenderThread.getASurfaceControlFunctions();
|
||||||
|
|
||||||
|
if (surfaceControl == nullptr) {
|
||||||
|
setASurfaceTransactionCallback(nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
if (mSurfaceControl != nullptr) {
|
if (mSurfaceControl != nullptr) {
|
||||||
funcs.unregisterListenerFunc(this, &onSurfaceStatsAvailable);
|
funcs.unregisterListenerFunc(this, &onSurfaceStatsAvailable);
|
||||||
funcs.releaseFunc(mSurfaceControl);
|
funcs.releaseFunc(mSurfaceControl);
|
||||||
|
|||||||
Reference in New Issue
Block a user