summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2017-05-10 17:51:55 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2017-05-11 08:47:32 -0700
commit625c2ea52777f53c1f23ca71e2aa5094dc4630c5 (patch)
tree8ab31f4767b6375075ff0c1b18d82d1c05b2b2c1
parent5290d7ed4c05d842ff1eda65ed08e11eb94be246 (diff)
downloadqtlocation-mapboxgl-625c2ea52777f53c1f23ca71e2aa5094dc4630c5.tar.gz
[core] When a layer is added, reload its source's tiles
m---------mapbox-gl-js0
-rw-r--r--src/mbgl/style/style.cpp31
2 files changed, 16 insertions, 15 deletions
diff --git a/mapbox-gl-js b/mapbox-gl-js
-Subproject 44641e917ed0e37a1c1622ab154f068b22927b0
+Subproject 8b085a211579d417ad8b3d58bc502c4ffbdfc2e
diff --git a/src/mbgl/style/style.cpp b/src/mbgl/style/style.cpp
index 4b694917c3..f083ca47b8 100644
--- a/src/mbgl/style/style.cpp
+++ b/src/mbgl/style/style.cpp
@@ -52,6 +52,21 @@ namespace style {
static Observer nullObserver;
+struct QueueSourceReloadVisitor {
+ UpdateBatch& updateBatch;
+
+ // No need to reload sources for these types; their visibility can change but
+ // they don't participate in layout.
+ void operator()(CustomLayer&) {}
+ void operator()(RasterLayer&) {}
+ void operator()(BackgroundLayer&) {}
+
+ template <class VectorLayer>
+ void operator()(VectorLayer& layer) {
+ updateBatch.sourceIDs.insert(layer.getSourceID());
+ }
+};
+
Style::Style(Scheduler& scheduler_, FileSource& fileSource_, float pixelRatio)
: scheduler(scheduler_),
fileSource(fileSource_),
@@ -248,6 +263,7 @@ Layer* Style::addLayer(std::unique_ptr<Layer> layer, optional<std::string> befor
}
layer->baseImpl->setObserver(this);
+ layer->accept(QueueSourceReloadVisitor { updateBatch });
auto added = layers.emplace(before ? findLayer(*before) : layers.end(), std::move(layer))->get();
renderLayers.emplace(before ? findRenderLayer(*before) : renderLayers.end(), added->baseImpl->createRenderLayer());
@@ -726,21 +742,6 @@ void Style::onSpriteError(std::exception_ptr error) {
observer->onResourceError(error);
}
-struct QueueSourceReloadVisitor {
- UpdateBatch& updateBatch;
-
- // No need to reload sources for these types; their visibility can change but
- // they don't participate in layout.
- void operator()(CustomLayer&) {}
- void operator()(RasterLayer&) {}
- void operator()(BackgroundLayer&) {}
-
- template <class VectorLayer>
- void operator()(VectorLayer& layer) {
- updateBatch.sourceIDs.insert(layer.getSourceID());
- }
-};
-
void Style::onLayerFilterChanged(Layer& layer) {
layer.accept(QueueSourceReloadVisitor { updateBatch });
observer->onUpdate(Update::Repaint);