summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruno de Oliveira Abinader <bruno@mapbox.com>2017-08-13 19:14:08 +0300
committerBruno de Oliveira Abinader <bruno@mapbox.com>2017-08-29 15:31:49 +0300
commit833ab66a0ea45e5efc2da915f723b281e8c23c59 (patch)
tree2dbcd6d74be06ce425ce309a2efe17474cbcb082
parenta2712f6fa439af976f7c17685b78340cb14d67a1 (diff)
downloadqtlocation-mapboxgl-833ab66a0ea45e5efc2da915f723b281e8c23c59.tar.gz
[core] Trigger style::Observer::onUpdate() only if style is loaded
-rw-r--r--src/mbgl/style/style_impl.cpp31
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 {