[RFC,v1,06/54] libcamera: request: completeBuffer(): Emit `bufferCompleted` here
diff mbox series

Message ID 20260629163017.863145-7-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
The `Request` class already manages the emission of that signal in
`doCancelRequest()`, so let's move the normal emission from the pipeline
handler base class while keeping the ordering of things (except the trace
point since it probably makes more sense to have the trace point before
user code runs).

Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 src/libcamera/pipeline_handler.cpp | 2 --
 src/libcamera/request.cpp          | 3 +++
 2 files changed, 3 insertions(+), 2 deletions(-)

Patch
diff mbox series

diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp
index e7145c1d48..3d49f85cfa 100644
--- a/src/libcamera/pipeline_handler.cpp
+++ b/src/libcamera/pipeline_handler.cpp
@@ -562,8 +562,6 @@  void PipelineHandler::doQueueRequests(Camera *camera)
  */
 bool PipelineHandler::completeBuffer(Request *request, FrameBuffer *buffer)
 {
-	Camera *camera = request->_d()->camera();
-	camera->bufferCompleted.emit(request, buffer);
 	return request->_d()->completeBuffer(buffer);
 }
 
diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp
index 5f983e0ce6..022a97f169 100644
--- a/src/libcamera/request.cpp
+++ b/src/libcamera/request.cpp
@@ -104,6 +104,9 @@  bool Request::Private::completeBuffer(FrameBuffer *buffer)
 {
 	LIBCAMERA_TRACEPOINT(request_complete_buffer, this, buffer);
 
+	Request *request = LIBCAMERA_O_PTR();
+	camera_->bufferCompleted.emit(request, buffer);
+
 	int ret = pending_.erase(buffer);
 	ASSERT(ret == 1);