pipewire/spa/plugins/libcamera
Barnabás Pőcze c80af0c2c0 spa: libcamera: source: remove impl::pendingRequests
The handling of `impl::pendingRequests` is a bit problematic because,
for example, during startup, if `spa_libcamera_buffer_recycle()` observes
that `impl::active == false`, then it will try to append to `impl::pendingRequests`,
which is being iterated in the main thread in `spa_libcamera_stream_on()`.
That is not allowed on an `std::deque`.

So instead remove it altogether, and simply queue all requests when starting.
After `libcamera::Camera::stop()` returns, every request is guaranteed not
to be used by libcamera, and they can be freely reused, so this is safe to do.

This also removes the need for calling `spa_libcamera_buffer_recycle()` when
the buffers are set/unset on a port since that function no longer changes
anything apart from updating `buffer::flags` but `spa_libcamera_alloc_buffers()`
is modified appropriately to take care of that. And in the case of
`spa_libcamera_clear_buffers()` clearing the flag is not required because the
next `spa_libcamera_alloc_buffers()` call will reset reset the flags.

(cherry picked from commit 68627c5563)
2025-09-27 13:22:59 +02:00
..
libcamera-device.cpp spa: libcamera: use nullptr instead of NULL 2025-09-26 09:58:10 +02:00
libcamera-manager.cpp spa: libcamera: manager: keep libcamera::CameraManager 2025-09-26 09:58:10 +02:00
libcamera-manager.hpp treewide: use SPDX tags to specify copyright information 2023-02-16 10:54:48 +00:00
libcamera-source.cpp spa: libcamera: source: remove impl::pendingRequests 2025-09-27 13:22:59 +02:00
libcamera.c spa: export log topic enumerations 2024-01-04 10:02:55 +00:00
libcamera.h spa: remove unnecessary indirection for some spa_log_topics 2023-10-06 13:08:24 +00:00
meson.build meson: fix build with missing libudev-devel 2024-02-06 11:49:40 +01:00