android: camera_stream: Don't close fence if wait fails

The camera HAL APIs requires that any acquire fence that hasn't been
waited on to be sent back to the framework as a release fence. The
CameraDevice already copies the acquire fence to the release fence when
signaling request completion, but the CameraStream incorrectly closes
the fence when a wait fails and sets it to -1. Fix it.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
This commit is contained in:
Laurent Pinchart 2021-10-19 17:18:00 +05:30 committed by Umang Jain
parent e82d7e4767
commit 5f4f444aed

View file

@ -147,16 +147,16 @@ int CameraStream::process(const FrameBuffer &source,
Camera3RequestDescriptor *request)
{
/* Handle waiting on fences on the destination buffer. */
int fence = dest.fence;
if (fence != -1) {
int ret = waitFence(fence);
::close(fence);
dest.fence = -1;
if (dest.fence != -1) {
int ret = waitFence(dest.fence);
if (ret < 0) {
LOG(HAL, Error) << "Failed waiting for fence: "
<< fence << ": " << strerror(-ret);
<< dest.fence << ": " << strerror(-ret);
return ret;
}
::close(dest.fence);
dest.fence = -1;
}
if (!postProcessor_)