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