diff --git a/platform/qt/src/qmapboxgl.cpp b/platform/qt/src/qmapboxgl.cpp index d58401283..e1fe7f5a3 100644 --- a/platform/qt/src/qmapboxgl.cpp +++ b/platform/qt/src/qmapboxgl.cpp @@ -1817,11 +1817,13 @@ void QMapboxGLPrivate::update(std::shared_ptr parameters { std::lock_guard lock(m_mapRendererMutex); + m_updateParameters = std::move(parameters); + if (!m_mapRenderer) { return; } - m_mapRenderer->updateParameters(std::move(parameters)); + m_mapRenderer->updateParameters(std::move(m_updateParameters)); requestRendering(); } @@ -1856,6 +1858,11 @@ void QMapboxGLPrivate::createRenderer() connect(m_mapRenderer.get(), SIGNAL(needsRendering()), this, SLOT(requestRendering())); m_mapRenderer->setObserver(m_rendererObserver); + + if (m_updateParameters) { + m_mapRenderer->updateParameters(m_updateParameters); + requestRendering(); + } } void QMapboxGLPrivate::destroyRenderer() diff --git a/platform/qt/src/qmapboxgl_map_renderer.cpp b/platform/qt/src/qmapboxgl_map_renderer.cpp index acc419449..8c554dab7 100644 --- a/platform/qt/src/qmapboxgl_map_renderer.cpp +++ b/platform/qt/src/qmapboxgl_map_renderer.cpp @@ -71,9 +71,8 @@ void QMapboxGLMapRenderer::render() // Lock on the parameters std::lock_guard lock(m_updateMutex); - if (!m_updateParameters) { - return; - } + // UpdateParameters should always be available when rendering. + assert(m_updateParameters); // Hold on to the update parameters during render params = m_updateParameters; diff --git a/platform/qt/src/qmapboxgl_p.hpp b/platform/qt/src/qmapboxgl_p.hpp index b94f4de19..f13c54859 100644 --- a/platform/qt/src/qmapboxgl_p.hpp +++ b/platform/qt/src/qmapboxgl_p.hpp @@ -54,6 +54,7 @@ private: std::recursive_mutex m_mapRendererMutex; std::shared_ptr m_rendererObserver; + std::shared_ptr m_updateParameters; std::unique_ptr m_mapObserver; std::shared_ptr m_fileSourceObj;