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
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