summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-10-19 17:18:00 +0530
committerUmang Jain <umang.jain@ideasonboard.com>2021-10-19 19:15:56 +0530
commit5f4f444aed0cf1ff120884db3e031c995c44f053 (patch)
tree587280d7c4baa66e18060792468630d64a7a95ce
parente82d7e476759fb76dc280ff4b8a4a4f246deb103 (diff)
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>
-rw-r--r--src/android/camera_stream.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/android/camera_stream.cpp b/src/android/camera_stream.cpp
index 9b5cd0c4..8e6ccb83 100644
--- a/src/android/camera_stream.cpp
+++ b/src/android/camera_stream.cpp
@@ -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_)