[libcamera-devel] [PATCH v3 8/8] libcamera: ipu3: Connect viewfinder's BufferReady signal

Jacopo Mondi jacopo at jmondi.org
Wed Apr 3 17:07:35 CEST 2019


Connect the viewfinder buffer ready signal to the IPU3CameraData slot
that complets the buffer first, and if not waiting for other buffers
completes the request as well.

Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
---
 src/libcamera/pipeline/ipu3/ipu3.cpp | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index 17e3e8677e28..706e4f647ed7 100644
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
@@ -167,7 +167,7 @@ private:
 		{
 		}
 
-		void imguOutputBufferReady(Buffer *buffer);
+		void imguCaptureBufferReady(Buffer *buffer);
 		void imguInputBufferReady(Buffer *buffer);
 		void cio2BufferReady(Buffer *buffer);
 
@@ -755,7 +755,9 @@ int PipelineHandlerIPU3::registerCameras()
 		data->imgu_->input_->bufferReady.connect(data.get(),
 					&IPU3CameraData::imguInputBufferReady);
 		data->imgu_->output_.dev->bufferReady.connect(data.get(),
-					&IPU3CameraData::imguOutputBufferReady);
+					&IPU3CameraData::imguCaptureBufferReady);
+		data->imgu_->viewfinder_.dev->bufferReady.connect(data.get(),
+					&IPU3CameraData::imguCaptureBufferReady);
 
 		/* Create and register the Camera instance. */
 		std::string cameraName = cio2->sensor_->entityName() + " "
@@ -799,13 +801,13 @@ void PipelineHandlerIPU3::IPU3CameraData::imguInputBufferReady(Buffer *buffer)
  *
  * Buffers completed from the ImgU output are directed to the application.
  */
-void PipelineHandlerIPU3::IPU3CameraData::imguOutputBufferReady(Buffer *buffer)
+void PipelineHandlerIPU3::IPU3CameraData::imguCaptureBufferReady(Buffer *buffer)
 {
 	Request *request = requestFromBuffer(buffer);
 	ASSERT(request);
 
-	pipe_->completeBuffer(camera_, request, buffer);
-	pipe_->completeRequest(camera_, request);
+	if (pipe_->completeBuffer(camera_, request, buffer))
+		pipe_->completeRequest(camera_, request);
 }
 
 /**
-- 
2.21.0



More information about the libcamera-devel mailing list