libcamera: thread: Support dispatching messages to main thread
Threads contain message queues and dispatch queued messages in their event loop, in Thread::exec(). This mechanism prevents the main thread from dispatching messages as it doesn't run Thread::exec(). Fix this by moving message dispatching from Thread::exec() to EventDispatcher::processEvents(). Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
This commit is contained in:
@@ -43,6 +43,8 @@ public:
|
||||
EventDispatcher *eventDispatcher();
|
||||
void setEventDispatcher(std::unique_ptr<EventDispatcher> dispatcher);
|
||||
|
||||
void dispatchMessages();
|
||||
|
||||
protected:
|
||||
int exec();
|
||||
virtual void run();
|
||||
@@ -53,7 +55,6 @@ private:
|
||||
|
||||
void postMessage(std::unique_ptr<Message> msg, Object *receiver);
|
||||
void removeMessages(Object *receiver);
|
||||
void dispatchMessages();
|
||||
|
||||
friend class Object;
|
||||
friend class ThreadData;
|
||||
|
||||
Reference in New Issue
Block a user