[RFC PATCH v1] libcamera: base: object,thread: Disable copy/move

Barnabás Pőcze pobrn at protonmail.com
Thu Jan 30 20:54:33 CET 2025


Objects of type `Object` and `Thread` have address identities, so they
should not be just moved/copied. And the special member functions
generated by the compiler do not do the right thing. So delete them.

Signed-off-by: Barnabás Pőcze <pobrn at protonmail.com>
---
 include/libcamera/base/object.h | 3 +++
 include/libcamera/base/thread.h | 3 +++
 2 files changed, 6 insertions(+)

diff --git a/include/libcamera/base/object.h b/include/libcamera/base/object.h
index 508773cd0..6cb935a04 100644
--- a/include/libcamera/base/object.h
+++ b/include/libcamera/base/object.h
@@ -12,6 +12,7 @@
 #include <vector>
 
 #include <libcamera/base/bound_method.h>
+#include <libcamera/base/class.h>
 
 namespace libcamera {
 
@@ -52,6 +53,8 @@ protected:
 	bool assertThreadBound(const char *message);
 
 private:
+	LIBCAMERA_DISABLE_COPY_AND_MOVE(Object)
+
 	friend class SignalBase;
 	friend class Thread;
 
diff --git a/include/libcamera/base/thread.h b/include/libcamera/base/thread.h
index 3209d4f7c..3cbf6398e 100644
--- a/include/libcamera/base/thread.h
+++ b/include/libcamera/base/thread.h
@@ -13,6 +13,7 @@
 
 #include <libcamera/base/private.h>
 
+#include <libcamera/base/class.h>
 #include <libcamera/base/message.h>
 #include <libcamera/base/signal.h>
 #include <libcamera/base/span.h>
@@ -54,6 +55,8 @@ protected:
 	virtual void run();
 
 private:
+	LIBCAMERA_DISABLE_COPY_AND_MOVE(Thread)
+
 	void startThread();
 	void finishThread();
 
-- 
2.48.1




More information about the libcamera-devel mailing list