Fix error trap in SurfaceTexture Client
There was an issue in Surface::lock where failure to lock a surface resulted in two bad things happening: - success was returned to the caller (it was apparently locked). - an uninitialised pointer was returned as the buffer. Change-Id: I8b0df81400e0fa0542a8bb993d76923ac96b686e
This commit is contained in:
parent
db1597a989
commit
47ad361cee
@ -757,12 +757,16 @@ status_t SurfaceTextureClient::lock(
|
||||
ALOGW_IF(res, "failed locking buffer (handle = %p)",
|
||||
backBuffer->handle);
|
||||
|
||||
mLockedBuffer = backBuffer;
|
||||
outBuffer->width = backBuffer->width;
|
||||
outBuffer->height = backBuffer->height;
|
||||
outBuffer->stride = backBuffer->stride;
|
||||
outBuffer->format = backBuffer->format;
|
||||
outBuffer->bits = vaddr;
|
||||
if (res != 0) {
|
||||
err = INVALID_OPERATION;
|
||||
} else {
|
||||
mLockedBuffer = backBuffer;
|
||||
outBuffer->width = backBuffer->width;
|
||||
outBuffer->height = backBuffer->height;
|
||||
outBuffer->stride = backBuffer->stride;
|
||||
outBuffer->format = backBuffer->format;
|
||||
outBuffer->bits = vaddr;
|
||||
}
|
||||
}
|
||||
}
|
||||
return err;
|
||||
|
Loading…
Reference in New Issue
Block a user