diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2015-11-18 13:21:16 -0800 |
---|---|---|
committer | Justin R. Miller <incanus@codesorcery.net> | 2015-11-18 16:04:37 -0800 |
commit | 50a33e4e6d5a558f213dcdb61e3f595c5cef4dd3 (patch) | |
tree | 6b7d86531736330733bc8431cc24d4155671d3ff | |
parent | fd0e21321e40d1bc503a1c2b6dadb677ea2c6940 (diff) | |
download | qtlocation-mapboxgl-50a33e4e6d5a558f213dcdb61e3f595c5cef4dd3.tar.gz |
[core] Avoid calling AnnotationManager::updateStyle until the style is loaded
Fixes #3037
-rw-r--r-- | src/mbgl/map/map_context.cpp | 2 | ||||
-rw-r--r-- | src/mbgl/style/style.cpp | 6 | ||||
-rw-r--r-- | src/mbgl/style/style.hpp | 1 |
3 files changed, 8 insertions, 1 deletions
diff --git a/src/mbgl/map/map_context.cpp b/src/mbgl/map/map_context.cpp index 031fbb57ca..0c01c822e7 100644 --- a/src/mbgl/map/map_context.cpp +++ b/src/mbgl/map/map_context.cpp @@ -169,7 +169,7 @@ void MapContext::update() { data.setAnimationTime(Clock::now()); - if (updateFlags & Update::Annotations) { + if (style->isLoaded() && updateFlags & Update::Annotations) { data.getAnnotationManager()->updateStyle(*style); updateFlags |= Update::Classes; } diff --git a/src/mbgl/style/style.cpp b/src/mbgl/style/style.cpp index 14d93fb12a..3523a72079 100644 --- a/src/mbgl/style/style.cpp +++ b/src/mbgl/style/style.cpp @@ -57,6 +57,8 @@ void Style::setJSON(const std::string& json, const std::string&) { glyphStore->setURL(parser.getGlyphURL()); spriteStore->setURL(parser.getSpriteURL()); + + loaded = true; } Style::~Style() { @@ -175,6 +177,10 @@ bool Style::hasTransitions() const { } bool Style::isLoaded() const { + if (!loaded) { + return false; + } + for (const auto& source : sources) { if (!source->isLoaded()) { return false; diff --git a/src/mbgl/style/style.hpp b/src/mbgl/style/style.hpp index 5f18a8fec4..4eef6cce75 100644 --- a/src/mbgl/style/style.hpp +++ b/src/mbgl/style/style.hpp @@ -100,6 +100,7 @@ private: void emitTileDataChanged(); void emitResourceLoadingFailed(std::exception_ptr error); + bool loaded = false; bool shouldReparsePartialTiles = false; Observer* observer = nullptr; |