From db1c4f2cc2f57b5ea790cac09bd9923b5d86a0ce Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Wed, 18 Nov 2015 13:21:16 -0800 Subject: [core] Avoid calling AnnotationManager::updateStyle until the style is loaded Fixes #3037 --- src/mbgl/map/map_context.cpp | 2 +- src/mbgl/style/style.cpp | 6 ++++++ src/mbgl/style/style.hpp | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/mbgl/map/map_context.cpp b/src/mbgl/map/map_context.cpp index 6fbd35ad78..3db1138dfd 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; -- cgit v1.2.1