summaryrefslogtreecommitdiff
path: root/src/libcamera/include
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2019-07-10 14:47:30 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2019-07-11 11:57:37 +0300
commitcc3ae13d9edf36473fb0c4c78b9490c355ce0096 (patch)
tree5216f22dd8eda2975bc41fc6ea9d504892a62f3f /src/libcamera/include
parent01b930964acdd9475d46044c459396f8c3cf8a79 (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.h14
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__ */