[Qt] UpdateParameters should always be available when rendering

This commit is contained in:
Bruno de Oliveira Abinader
2018-10-01 13:09:40 -07:00
parent 0dff7879f6
commit 6c4cb063c2
3 changed files with 11 additions and 4 deletions

View File

@@ -1817,11 +1817,13 @@ void QMapboxGLPrivate::update(std::shared_ptr<mbgl::UpdateParameters> parameters
{
std::lock_guard<std::recursive_mutex> 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()

View File

@@ -71,9 +71,8 @@ void QMapboxGLMapRenderer::render()
// Lock on the parameters
std::lock_guard<std::mutex> 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;

View File

@@ -54,6 +54,7 @@ private:
std::recursive_mutex m_mapRendererMutex;
std::shared_ptr<mbgl::RendererObserver> m_rendererObserver;
std::shared_ptr<mbgl::UpdateParameters> m_updateParameters;
std::unique_ptr<QMapboxGLMapObserver> m_mapObserver;
std::shared_ptr<mbgl::DefaultFileSource> m_fileSourceObj;