[libcamera-devel] [PATCH 0/2] android: Wait on acquisition fences in CameraStream

Jacopo Mondi jacopo at jmondi.org
Fri Sep 24 19:02:32 CEST 2021


An acquisition fence is associated to each camera3_stream_buffer_t part of a
capture request.

Streams generated by libcamera (Type::Direct) are queued to the
libcamera::Camera and their fences are waited on by the CameraWorker class.

Acquisition fences for Streams generated by post-processing have been so far
ignored and the fence was not closed, resulting in a leak that crashed the
camera service with:

 FATAL FileDescriptor file_descriptor.cpp:265 Failed to dup() fd: Too many open files

Fix this by instrumenting CameraStream to handle fences in the process()
function.

This is a temporary workaround until libcamera is not instrumented with a
mechanism to handle fences internally.

Thanks
   j

Jacopo Mondi (2):
  android: wait on fences in CameraStream::process()
  android: Post-pone fences reset in result

 src/android/camera_device.cpp | 46 +++++++++++++++++++++++-----------
 src/android/camera_stream.cpp | 47 ++++++++++++++++++++++++++++++++++-
 src/android/camera_stream.h   |  4 ++-
 3 files changed, 81 insertions(+), 16 deletions(-)

--
2.32.0



More information about the libcamera-devel mailing list