summaryrefslogtreecommitdiff
path: root/src/libcamera/event_dispatcher_poll.cpp
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2019-08-12 03:35:35 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2019-08-17 18:32:27 +0300
commita66e5ca8c61093c5b927bb072c595560fd5d5d38 (patch)
tree3cf092aaf4e1dafae4093683499bb91ede190248 /src/libcamera/event_dispatcher_poll.cpp
parent391b184fc57ddcfdf38d3fd3a32b9acc5e7cc4e0 (diff)
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>
Diffstat (limited to 'src/libcamera/event_dispatcher_poll.cpp')
-rw-r--r--src/libcamera/event_dispatcher_poll.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/libcamera/event_dispatcher_poll.cpp b/src/libcamera/event_dispatcher_poll.cpp
index 4f15f3e3..281f37bd 100644
--- a/src/libcamera/event_dispatcher_poll.cpp
+++ b/src/libcamera/event_dispatcher_poll.cpp
@@ -19,6 +19,7 @@
#include <libcamera/timer.h>
#include "log.h"
+#include "thread.h"
/**
* \file event_dispatcher_poll.h
@@ -143,6 +144,8 @@ void EventDispatcherPoll::processEvents()
{
int ret;
+ Thread::current()->dispatchMessages();
+
/* Create the pollfd array. */
std::vector<struct pollfd> pollfds;
pollfds.reserve(notifiers_.size() + 1);