diff options
author | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2017-08-13 19:14:08 +0300 |
---|---|---|
committer | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2017-08-29 15:31:49 +0300 |
commit | 833ab66a0ea45e5efc2da915f723b281e8c23c59 (patch) | |
tree | 2dbcd6d74be06ce425ce309a2efe17474cbcb082 | |
parent | a2712f6fa439af976f7c17685b78340cb14d67a1 (diff) | |
download | qtlocation-mapboxgl-833ab66a0ea45e5efc2da915f723b281e8c23c59.tar.gz |
[core] Trigger style::Observer::onUpdate() only if style is loaded
-rw-r--r-- | src/mbgl/style/style_impl.cpp | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/src/mbgl/style/style_impl.cpp b/src/mbgl/style/style_impl.cpp index 0fb49d1d22..17574052b6 100644 --- a/src/mbgl/style/style_impl.cpp +++ b/src/mbgl/style/style_impl.cpp @@ -88,7 +88,6 @@ void Style::Impl::parse(const std::string& json_) { } mutated = false; - loaded = true; json = json_; sources.clear(); @@ -118,7 +117,9 @@ void Style::Impl::parse(const std::string& json_) { spriteLoader->load(parser.spriteURL, scheduler, fileSource); glyphURL = parser.glyphURL; + loaded = true; observer->onStyleLoaded(); + observer->onUpdate(Update::Repaint); } std::string Style::Impl::getJSON() const { @@ -203,7 +204,9 @@ Layer* Style::Impl::addLayer(std::unique_ptr<Layer> layer, optional<std::string> } layer->setObserver(this); - observer->onUpdate(Update::Repaint); + if (loaded) { + observer->onUpdate(Update::Repaint); + } return layers.add(std::move(layer), before); } @@ -213,7 +216,9 @@ std::unique_ptr<Layer> Style::Impl::removeLayer(const std::string& id) { if (layer) { layer->setObserver(nullptr); - observer->onUpdate(Update::Repaint); + if (loaded) { + observer->onUpdate(Update::Repaint); + } } return layer; @@ -288,13 +293,17 @@ void Style::Impl::setObserver(style::Observer* observer_) { void Style::Impl::onSourceLoaded(Source& source) { sources.update(source); observer->onSourceLoaded(source); - observer->onUpdate(Update::Repaint); + if (loaded) { + observer->onUpdate(Update::Repaint); + } } void Style::Impl::onSourceChanged(Source& source) { sources.update(source); observer->onSourceChanged(source); - observer->onUpdate(Update::Repaint); + if (loaded) { + observer->onUpdate(Update::Repaint); + } } void Style::Impl::onSourceError(Source& source, std::exception_ptr error) { @@ -318,7 +327,9 @@ void Style::Impl::onSpriteLoaded(std::vector<std::unique_ptr<Image>>&& images_) addImage(std::move(image)); } spriteLoaded = true; - observer->onUpdate(Update::Repaint); // For *-pattern properties. + if (loaded) { + observer->onUpdate(Update::Repaint); // For *-pattern properties. + } } void Style::Impl::onSpriteError(std::exception_ptr error) { @@ -329,11 +340,15 @@ void Style::Impl::onSpriteError(std::exception_ptr error) { void Style::Impl::onLayerChanged(Layer& layer) { layers.update(layer); - observer->onUpdate(Update::Repaint); + if (loaded) { + observer->onUpdate(Update::Repaint); + } } void Style::Impl::onLightChanged(const Light&) { - observer->onUpdate(Update::Repaint); + if (loaded) { + observer->onUpdate(Update::Repaint); + } } void Style::Impl::dumpDebugLogs() const { |