[v3,06/41] pipeline: rkisp1: Add a frameStart function to handle DelayedControls::applyControls
diff mbox series

Message ID 20260914140309.3354666-7-stefan.klug@ideasonboard.com
State New
Headers show
Series
  • rkisp1: pipeline rework for PFC
Related show

Commit Message

Stefan Klug Sept. 14, 2026, 2:02 p.m. UTC
Move the call to applyControls into an intermediate function for
upcoming modfications.

As the frameStart handler checks for an activeCamera we can safely
connect the signal in match() where all the other signals get connected.

Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com>

---

Changes in v2:
- Moved signal connection into match() function.
---
 src/libcamera/pipeline/rkisp1/rkisp1.cpp | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

Patch
diff mbox series

diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
index 96382c93a427..74b2bb5c2659 100644
--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp
+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
@@ -1472,8 +1472,6 @@  int PipelineHandlerRkISP1::createCamera(MediaEntity *sensor)
 	data->delayedCtrls_ =
 		std::make_unique<DelayedControls>(data->sensor_->device(),
 						  params);
-	isp_->frameStart.connect(data->delayedCtrls_.get(),
-				 &DelayedControls::applyControls);
 
 	uint32_t supportedBlocks = kDefaultExtParamsBlocks;
 
@@ -1508,6 +1506,15 @@  int PipelineHandlerRkISP1::createCamera(MediaEntity *sensor)
 	return 0;
 }
 
+void PipelineHandlerRkISP1::frameStart(uint32_t sequence)
+{
+	if (!activeCamera_)
+		return;
+
+	RkISP1CameraData *data = cameraData(activeCamera_);
+	data->delayedCtrls_->applyControls(sequence);
+}
+
 bool PipelineHandlerRkISP1::match(DeviceEnumerator *enumerator)
 {
 	DeviceMatch dm("rkisp1");
@@ -1550,6 +1557,7 @@  bool PipelineHandlerRkISP1::match(DeviceEnumerator *enumerator)
 	if (hasSelfPath_ && !selfPath_.init(media_))
 		return false;
 
+	isp_->frameStart.connect(this, &PipelineHandlerRkISP1::frameStart);
 	mainPath_.bufferReady().connect(this, &PipelineHandlerRkISP1::imageBufferReady);
 	if (hasSelfPath_)
 		selfPath_.bufferReady().connect(this, &PipelineHandlerRkISP1::imageBufferReady);