[PATCH] libcamera: software_isp: Handle signals in the proper thread
Milan Zamazal
mzamazal at redhat.com
Thu Dec 19 11:31:08 CET 2024
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);
+ });
swIsp_->setSensorControls.connect(this, &SimpleCameraData::setSensorControls);
}
}
--
2.44.2
More information about the libcamera-devel
mailing list