Fix TextureView calling eglCreateImage with a destructed buffer
Fix an issue with hardware buffer passed from the SurfaceTexture
being destroyed before an SkImage is created. This CL is matched
by a change in frameworks/native
I2e025e683052168546f2e271a20a857b1e556b64.
Test: Ran TextureView CTS tests and a few apps that use TextureView.
Test: Fix verified by partner Mediatek
Bug: 160930384
Bug: 152781833
Bug: 153045874
Bug: 156047948
Bug: 160514803
Bug: 155545635
Bug: 155171712
Change-Id: I4d121f087fc842ce317745e7b7e2656f80a52b7d
(cherry picked from commit d125b447d7)
This commit is contained in:
@@ -149,6 +149,9 @@ void DeferredLayerUpdater::apply() {
|
||||
sk_sp<SkImage> layerImage = mImageSlots[slot].createIfNeeded(
|
||||
hardwareBuffer, dataspace, newContent,
|
||||
mRenderState.getRenderThread().getGrContext());
|
||||
// unref to match the ref added by ASurfaceTexture_dequeueBuffer. eglCreateImageKHR
|
||||
// (invoked by createIfNeeded) will add a ref to the AHardwareBuffer.
|
||||
AHardwareBuffer_release(hardwareBuffer);
|
||||
if (layerImage.get()) {
|
||||
SkMatrix textureTransform;
|
||||
mat4(transformMatrix).copyTo(textureTransform);
|
||||
|
||||
Reference in New Issue
Block a user