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>
This commit is contained in:
@@ -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__ */
|
||||
|
||||
Reference in New Issue
Block a user