pipewire/spa/plugins/libcamera
Barnabás Pőcze 68627c5563 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.
2025-08-13 10:23:09 +02:00
..
libcamera-device.cpp spa: libcamera: use nullptr instead of NULL 2025-07-15 08:12:54 +00:00
libcamera-manager.cpp spa: libcamera: manager: keep libcamera::CameraManager 2025-08-01 15:54:10 +00: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-08-13 10:23:09 +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