1 #pragma once
2 
3 #include <mbgl/actor/mailbox.hpp>
4 #include <mbgl/actor/scheduler.hpp>
5 #include <mbgl/util/util.hpp>
6 
7 #include <QObject>
8 
9 #include <memory>
10 #include <mutex>
11 #include <queue>
12 
13 class QMapboxGLScheduler : public QObject, public mbgl::Scheduler
14 {
15     Q_OBJECT
16 
17 public:
18     QMapboxGLScheduler();
19     virtual ~QMapboxGLScheduler();
20 
21     // mbgl::Scheduler implementation.
22     void schedule(std::weak_ptr<mbgl::Mailbox> scheduled) final;
23 
24     void processEvents();
25 
26 signals:
27     void needsProcessing();
28 
29 private:
30     MBGL_STORE_THREAD(tid);
31 
32     std::mutex m_taskQueueMutex;
33     std::queue<std::weak_ptr<mbgl::Mailbox>> m_taskQueue;
34 };
35