summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAsheem Mamoowala <asheem.mamoowala@mapbox.com>2018-02-05 14:29:56 -0800
committerAsheem Mamoowala <asheem.mamoowala@mapbox.com>2018-02-05 16:01:46 -0800
commitdf9006c547d58ef11e41b97de18ed11fc7cb564b (patch)
tree07bf56591c794155b434c6b2567a0a2da48ceda9
parent249813cd4ba21a62d999e99541e86636cac73408 (diff)
downloadqtlocation-mapboxgl-upstream/tileset-recycle.tar.gz
[core] Clear tile pyramid when tileset goes to nullupstream/tileset-recycle
-rw-r--r--src/mbgl/renderer/sources/render_raster_dem_source.cpp9
-rw-r--r--src/mbgl/renderer/sources/render_raster_source.cpp9
-rw-r--r--src/mbgl/renderer/sources/render_vector_source.cpp9
3 files changed, 15 insertions, 12 deletions
diff --git a/src/mbgl/renderer/sources/render_raster_dem_source.cpp b/src/mbgl/renderer/sources/render_raster_dem_source.cpp
index 042f955089..4de949c9f2 100644
--- a/src/mbgl/renderer/sources/render_raster_dem_source.cpp
+++ b/src/mbgl/renderer/sources/render_raster_dem_source.cpp
@@ -34,10 +34,6 @@ void RenderRasterDEMSource::update(Immutable<style::Source::Impl> baseImpl_,
optional<Tileset> _tileset = impl().getTileset();
- if (!_tileset) {
- return;
- }
-
if (tileset != _tileset) {
tileset = _tileset;
@@ -47,6 +43,11 @@ void RenderRasterDEMSource::update(Immutable<style::Source::Impl> baseImpl_,
tilePyramid.renderTiles.clear();
tilePyramid.cache.clear();
}
+ // Allow clearing the tile pyramid first, before the early return in case
+ // the new tileset is not yet available or has an error in loading
+ if (!_tileset) {
+ return;
+ }
tilePyramid.update(layers,
needsRendering,
diff --git a/src/mbgl/renderer/sources/render_raster_source.cpp b/src/mbgl/renderer/sources/render_raster_source.cpp
index 74740f4eac..5d32818663 100644
--- a/src/mbgl/renderer/sources/render_raster_source.cpp
+++ b/src/mbgl/renderer/sources/render_raster_source.cpp
@@ -31,10 +31,6 @@ void RenderRasterSource::update(Immutable<style::Source::Impl> baseImpl_,
optional<Tileset> _tileset = impl().getTileset();
- if (!_tileset) {
- return;
- }
-
if (tileset != _tileset) {
tileset = _tileset;
@@ -44,6 +40,11 @@ void RenderRasterSource::update(Immutable<style::Source::Impl> baseImpl_,
tilePyramid.renderTiles.clear();
tilePyramid.cache.clear();
}
+ // Allow clearing the tile pyramid first, before the early return in case
+ // the new tileset is not yet available or has an error in loading
+ if (!_tileset) {
+ return;
+ }
tilePyramid.update(layers,
needsRendering,
diff --git a/src/mbgl/renderer/sources/render_vector_source.cpp b/src/mbgl/renderer/sources/render_vector_source.cpp
index 80ea8c60ac..c01257aea9 100644
--- a/src/mbgl/renderer/sources/render_vector_source.cpp
+++ b/src/mbgl/renderer/sources/render_vector_source.cpp
@@ -34,10 +34,6 @@ void RenderVectorSource::update(Immutable<style::Source::Impl> baseImpl_,
optional<Tileset> _tileset = impl().getTileset();
- if (!_tileset) {
- return;
- }
-
if (tileset != _tileset) {
tileset = _tileset;
@@ -47,6 +43,11 @@ void RenderVectorSource::update(Immutable<style::Source::Impl> baseImpl_,
tilePyramid.renderTiles.clear();
tilePyramid.cache.clear();
}
+ // Allow clearing the tile pyramid first, before the early return in case
+ // the new tileset is not yet available or has an error in loading
+ if (!_tileset) {
+ return;
+ }
tilePyramid.update(layers,
needsRendering,