[libcamera-devel] [PATCH 1/3] apps: cam: kms_sink: Do not process requests after stop()

Umang Jain umang.jain at ideasonboard.com
Sun Apr 23 22:39:29 CEST 2023


KMSSink might process completed page flip requests from DRM
after stop() has been called. This is not right hence connect the
Device::requestCompleted signal on start() and disconnect it on stop().

Signed-off-by: Umang Jain <umang.jain at ideasonboard.com>
---
 src/apps/cam/kms_sink.cpp | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/apps/cam/kms_sink.cpp b/src/apps/cam/kms_sink.cpp
index 353209cd..a508977d 100644
--- a/src/apps/cam/kms_sink.cpp
+++ b/src/apps/cam/kms_sink.cpp
@@ -63,7 +63,6 @@ KMSSink::KMSSink(const std::string &connectorName)
 		return;
 	}
 
-	dev_.requestComplete.connect(this, &KMSSink::requestComplete);
 }
 
 void KMSSink::mapBuffer(libcamera::FrameBuffer *buffer)
@@ -328,11 +327,15 @@ int KMSSink::start()
 		return ret;
 	}
 
+	dev_.requestComplete.connect(this, &KMSSink::requestComplete);
+
 	return 0;
 }
 
 int KMSSink::stop()
 {
+	dev_.requestComplete.disconnect();
+
 	/* Display pipeline. */
 	DRM::AtomicRequest request(&dev_);
 
-- 
2.39.1



More information about the libcamera-devel mailing list