diff options
author | Thiago Marcos P. Santos <tmpsantos@gmail.com> | 2018-01-26 21:33:56 +0200 |
---|---|---|
committer | Thiago Marcos P. Santos <tmpsantos@gmail.com> | 2018-02-09 20:28:54 +0200 |
commit | 6542e6ee37c98318f9eb6cced317d24b283e2f18 (patch) | |
tree | 2352ed664321abf88d063942b7e3ad1932f2fbab /platform/qt/src/qmapboxgl_p.hpp | |
parent | 673730ccd423aed8deeba6889409f02cb1e9071d (diff) | |
download | qtlocation-mapboxgl-6542e6ee37c98318f9eb6cced317d24b283e2f18.tar.gz |
[qt] Make sure that methods are being called on the right thread
Diffstat (limited to 'platform/qt/src/qmapboxgl_p.hpp')
-rw-r--r-- | platform/qt/src/qmapboxgl_p.hpp | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/platform/qt/src/qmapboxgl_p.hpp b/platform/qt/src/qmapboxgl_p.hpp index b9a4b37ae5..31fb5138bf 100644 --- a/platform/qt/src/qmapboxgl_p.hpp +++ b/platform/qt/src/qmapboxgl_p.hpp @@ -31,27 +31,32 @@ public: void setObserver(mbgl::RendererObserver &) final; void update(std::shared_ptr<mbgl::UpdateParameters>) final; - mbgl::EdgeInsets margins; - - QMapboxGL *q_ptr { nullptr }; + // These need to be called on the same thread. + void createRenderer(); + void destroyRenderer(); + void render(); + void setFramebufferObject(quint32 fbo, const QSize& size); - std::shared_ptr<mbgl::DefaultFileSource> fileSourceObj; - std::shared_ptr<mbgl::ThreadPool> threadPool; + mbgl::EdgeInsets margins; std::unique_ptr<mbgl::Map> mapObj; - std::unique_ptr<QMapboxGLMapObserver> mapObserver; - std::unique_ptr<QMapboxGLMapRenderer> mapRenderer; - std::shared_ptr<mbgl::RendererObserver> rendererObserver; - - QMapboxGLSettings::GLContextMode mode; - qreal pixelRatio; - - std::atomic_flag renderQueued = ATOMIC_FLAG_INIT; signals: void needsRendering(); private: Q_DISABLE_COPY(QMapboxGLPrivate) + std::recursive_mutex m_mapRendererMutex; + std::shared_ptr<mbgl::RendererObserver> m_rendererObserver; + + std::unique_ptr<QMapboxGLMapObserver> m_mapObserver; + std::shared_ptr<mbgl::DefaultFileSource> m_fileSourceObj; + std::shared_ptr<mbgl::ThreadPool> m_threadPool; + std::unique_ptr<QMapboxGLMapRenderer> m_mapRenderer; std::unique_ptr<mbgl::Actor<mbgl::ResourceTransform>> m_resourceTransform; + + QMapboxGLSettings::GLContextMode m_mode; + qreal m_pixelRatio; + + std::atomic_flag m_renderQueued = ATOMIC_FLAG_INIT; }; |