[PATCH] libcamera: software_isp: Handle signals in the proper thread
Barnabás Pőcze
pobrn at protonmail.com
Thu Dec 19 16:05:38 CET 2024
Hi
2024. december 19., csütörtök 11:31 keltezéssel, Milan Zamazal <mzamazal at redhat.com> írta:
> inputBufferReady ready signal in the simple pipeline is handled in the
> pipeline handler thread. Similarly, outputBufferReady and ispStatsReady
> signals should be handled there too, everything should be called from
> the right thread and not block the callers.
>
> Signed-off-by: Milan Zamazal <mzamazal at redhat.com>
> ---
> src/libcamera/pipeline/simple/simple.cpp | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp
> index 8ac24e6e..280112f4 100644
> --- a/src/libcamera/pipeline/simple/simple.cpp
> +++ b/src/libcamera/pipeline/simple/simple.cpp
> @@ -548,12 +548,17 @@ int SimpleCameraData::init()
> * bound explicitly to the pipe, which is bound to the pipeline
> * handler thread. The function then simply forwards the call to
> * conversionInputDone().
> + * Similarly for outputBufferReady and ispStatsReady signals.
> */
> swIsp_->inputBufferReady.connect(pipe, [this](FrameBuffer *buffer) {
> this->conversionInputDone(buffer);
> });
> - swIsp_->outputBufferReady.connect(this, &SimpleCameraData::conversionOutputDone);
> - swIsp_->ispStatsReady.connect(this, &SimpleCameraData::ispStatsReady);
> + swIsp_->outputBufferReady.connect(this, [this](FrameBuffer *buffer) {
> + this->conversionOutputDone(buffer);
> + });
> + swIsp_->ispStatsReady.connect(this, [this](uint32_t frame, uint32_t bufferId) {
> + this->ispStatsReady(frame, bufferId);
> + });
> [...]
The object is still `this`, so I wouldn't expect any difference in behaviour. Is there?
Regards,
Barnabás Pőcze
More information about the libcamera-devel
mailing list