#pragma once #include "qmapboxgl.hpp" #include "qmapboxgl_renderer_backend.hpp" #include #include #include #include #include #include #include #include namespace mbgl { class Renderer; class UpdateParameters; } // namespace mbgl class QMapboxGLRendererBackend; class QMapboxGLMapRenderer : public QObject { Q_OBJECT public: QMapboxGLMapRenderer(qreal pixelRatio, mbgl::ThreadPool &, QMapboxGLSettings::GLContextMode, const QString &localFontFamily); virtual ~QMapboxGLMapRenderer(); void render(); void updateFramebuffer(quint32 fbo, const mbgl::Size &size); void setObserver(std::shared_ptr); // Thread-safe, called by the Frontend void updateParameters(std::shared_ptr); signals: void needsRendering(); private: MBGL_STORE_THREAD(tid) Q_DISABLE_COPY(QMapboxGLMapRenderer) std::mutex m_updateMutex; std::shared_ptr m_updateParameters; QMapboxGLRendererBackend m_backend; std::unique_ptr m_renderer; bool m_forceScheduler; };