[RFC,v1,32/54] libcamera: pipeline_handler: buffersAddedDevice(): New virtual function
diff mbox series

Message ID 20260629163017.863145-33-barnabas.pocze@ideasonboard.com
State New
Headers show
Series
  • libcamera: Split requests and buffers
Related show

Commit Message

Barnabás Pőcze June 29, 2026, 4:29 p.m. UTC
This function allows pipeline handlers to be notified every time
new buffers are added to the camera's buffer pool.

Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
---
 include/libcamera/internal/pipeline_handler.h |  2 ++
 src/libcamera/pipeline_handler.cpp            | 22 +++++++++++++++++++
 2 files changed, 24 insertions(+)

Patch
diff mbox series

diff --git a/include/libcamera/internal/pipeline_handler.h b/include/libcamera/internal/pipeline_handler.h
index d7544642fb..d5b8fdb730 100644
--- a/include/libcamera/internal/pipeline_handler.h
+++ b/include/libcamera/internal/pipeline_handler.h
@@ -103,6 +103,8 @@  protected:
 	virtual bool acquireDevice(Camera *camera);
 	virtual void releaseDevice(Camera *camera);
 
+	virtual void buffersAddedDevice(Camera *camera);
+
 	CameraManager *manager_;
 
 private:
diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp
index 36e1509b2b..16f218831c 100644
--- a/src/libcamera/pipeline_handler.cpp
+++ b/src/libcamera/pipeline_handler.cpp
@@ -672,10 +672,32 @@  void PipelineHandler::cancelRequest(Request *request)
 	completeRequest(request);
 }
 
+/**
+ * \brief Notify about buffer addition
+ * \param[in] camera The camera
+ *
+ * Pipeline handlers may override this function in order to be notified
+ * after buffers have been added to the camera's buffer pool.
+ *
+ * \note This function is only called if the pipeline handler has opted into
+ * using the buffer pool at construction time.
+ *
+ * \context This function is called from the CameraManager thread.
+ *
+ * \todo more info?
+ *
+ * \sa Camera::addBuffer()
+ */
+void PipelineHandler::buffersAddedDevice([[maybe_unused]] Camera *camera)
+{
+}
+
 void PipelineHandler::buffersAdded(Camera *camera)
 {
 	if (!options_.usesBufferPool)
 		doQueueRequests(camera);
+	else
+		buffersAddedDevice(camera);
 }
 
 /**