diff options
Diffstat (limited to 'src/libcamera/base/object.cpp')
-rw-r--r-- | src/libcamera/base/object.cpp | 14 |
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); } |