1 #pragma once 2 3 #include "qmapboxgl.hpp" 4 #include "qmapboxgl_renderer_backend.hpp" 5 6 #include <mbgl/renderer/renderer.hpp> 7 #include <mbgl/renderer/renderer_backend.hpp> 8 #include <mbgl/renderer/renderer_observer.hpp> 9 #include <mbgl/storage/default_file_source.hpp> 10 #include <mbgl/util/shared_thread_pool.hpp> 11 #include <mbgl/util/util.hpp> 12 13 #include <QtGlobal> 14 15 #include <memory> 16 #include <mutex> 17 18 namespace mbgl { 19 class Renderer; 20 class UpdateParameters; 21 } // namespace mbgl 22 23 class QMapboxGLRendererBackend; 24 25 class QMapboxGLMapRenderer : public QObject 26 { 27 Q_OBJECT 28 29 public: 30 QMapboxGLMapRenderer(qreal pixelRatio, mbgl::DefaultFileSource &, 31 mbgl::ThreadPool &, QMapboxGLSettings::GLContextMode); 32 virtual ~QMapboxGLMapRenderer(); 33 34 void render(); 35 void updateFramebuffer(quint32 fbo, const mbgl::Size &size); 36 void setObserver(std::shared_ptr<mbgl::RendererObserver>); 37 38 // Thread-safe, called by the Frontend 39 void updateParameters(std::shared_ptr<mbgl::UpdateParameters>); 40 41 signals: 42 void needsRendering(); 43 44 private: 45 MBGL_STORE_THREAD(tid) 46 47 Q_DISABLE_COPY(QMapboxGLMapRenderer) 48 49 std::mutex m_updateMutex; 50 std::shared_ptr<mbgl::UpdateParameters> m_updateParameters; 51 52 QMapboxGLRendererBackend m_backend; 53 std::unique_ptr<mbgl::Renderer> m_renderer; 54 55 bool m_forceScheduler; 56 }; 57