[libcamera-devel,v2,0/2] android: Wait on acquisition fences in CameraStream
mbox series

Message ID 20210927213700.25365-1-jacopo@jmondi.org
Headers show
  • android: Wait on acquisition fences in CameraStream
Related show


Jacopo Mondi Sept. 27, 2021, 9:36 p.m. UTC
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()

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

- Handle ::Internal stream type and shuffle the patch order as suggested by

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

 src/android/camera_device.cpp | 50 ++++++++++++++++++++++++-----------
 src/android/camera_stream.cpp | 48 +++++++++++++++++++++++++++++++--
 src/android/camera_stream.h   |  4 ++-
 3 files changed, 84 insertions(+), 18 deletions(-)