summaryrefslogtreecommitdiff
path: root/src/libcamera/base/object.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libcamera/base/object.cpp')
-rw-r--r--src/libcamera/base/object.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/libcamera/base/object.cpp b/src/libcamera/base/object.cpp
index 3f28768e..ec5b55d1 100644
--- a/src/libcamera/base/object.cpp
+++ b/src/libcamera/base/object.cpp
@@ -47,6 +47,14 @@ LOG_DEFINE_CATEGORY(Object)
* object's thread, regardless of whether the signal is emitted in the same or
* in another thread.
*
+ * Objects can be connected to multiple signals, but they can only be connected
+ * to each signal once. Attempting to create multiple concurrent connections
+ * between the same signal and the same Object (to either the same or differents
+ * slots of the object) will cause an assertion failure. While it would be
+ * possible to allow the implementation to let objects connect to the same
+ * signal multiple times, there are no expected use cases for this in libcamera
+ * and this behaviour is restricted to favour defensive programming.
+ *
* \sa Message, Signal, Thread
*/
@@ -284,6 +292,12 @@ void Object::notifyThreadMove()
void Object::connect(SignalBase *signal)
{
+ /*
+ * Connecting the same signal to an object multiple times is not
+ * supported.
+ */
+ ASSERT(std::find(signals_.begin(), signals_.end(), signal) == signals_.end());
+
signals_.push_back(signal);
}