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:
Laurent Pinchart
2019-08-12 03:35:35 +03:00
parent 391b184fc5
commit a66e5ca8c6
3 changed files with 6 additions and 4 deletions
+2 -1
View File
@@ -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;