diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2019-07-10 14:47:30 +0300 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2019-07-11 11:57:37 +0300 |
commit | cc3ae13d9edf36473fb0c4c78b9490c355ce0096 (patch) | |
tree | 5216f22dd8eda2975bc41fc6ea9d504892a62f3f /src/libcamera/include | |
parent | 01b930964acdd9475d46044c459396f8c3cf8a79 (diff) |
libcamera: signal: Support cross-thread signals
Allow signals to cross thread boundaries by posting them to the
recipient through messages instead of calling the slot directly when the
recipient lives in a different thread.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Diffstat (limited to 'src/libcamera/include')
-rw-r--r-- | src/libcamera/include/message.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/libcamera/include/message.h b/src/libcamera/include/message.h index 97c9b80e..db17d647 100644 --- a/src/libcamera/include/message.h +++ b/src/libcamera/include/message.h @@ -10,6 +10,7 @@ namespace libcamera { class Object; +class SlotBase; class Thread; class Message @@ -17,6 +18,7 @@ class Message public: enum Type { None = 0, + SignalMessage = 1, }; Message(Type type); @@ -32,6 +34,18 @@ private: Object *receiver_; }; +class SignalMessage : public Message +{ +public: + SignalMessage(SlotBase *slot, void *pack) + : Message(Message::SignalMessage), slot_(slot), pack_(pack) + { + } + + SlotBase *slot_; + void *pack_; +}; + } /* namespace libcamera */ #endif /* __LIBCAMERA_MESSAGE_H__ */ |