diff options
author | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2019-01-16 14:35:13 +0200 |
---|---|---|
committer | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2019-01-16 16:16:18 +0200 |
commit | ac3d59862a6632de0cd5076ba2a65f4e4a4577f4 (patch) | |
tree | 1bd606b14c3ef01413e937df142dc255f2f0066d /src/mbgl/renderer/sources | |
parent | e0aeeba10f5d36be010ba773443aa8edd74343f5 (diff) | |
download | qtlocation-mapboxgl-ac3d59862a6632de0cd5076ba2a65f4e4a4577f4.tar.gz |
[core] TilePyramid has sorted render tiles
Thus we obviate unneeded extra sorting of render tiles at each render layer.
Diffstat (limited to 'src/mbgl/renderer/sources')
4 files changed, 6 insertions, 13 deletions
diff --git a/src/mbgl/renderer/sources/render_geojson_source.cpp b/src/mbgl/renderer/sources/render_geojson_source.cpp index a688026788..5eb6a931d3 100644 --- a/src/mbgl/renderer/sources/render_geojson_source.cpp +++ b/src/mbgl/renderer/sources/render_geojson_source.cpp @@ -96,11 +96,11 @@ void RenderGeoJSONSource::update(Immutable<style::Source::Impl> baseImpl_, if (data.lock() != data_) { data = data_; - tilePyramid.cache.clear(); + tilePyramid.reduceMemoryUse(); if (data_) { const uint8_t maxZ = impl().getZoomRange().max; - for (const auto& pair : tilePyramid.tiles) { + for (const auto& pair : tilePyramid.getTiles()) { if (pair.first.canonical.z <= maxZ) { static_cast<GeoJSONTile*>(pair.second.get())->updateData(data_->getTile(pair.first.canonical)); } @@ -109,8 +109,7 @@ void RenderGeoJSONSource::update(Immutable<style::Source::Impl> baseImpl_, } if (!data_) { - tilePyramid.tiles.clear(); - tilePyramid.renderTiles.clear(); + tilePyramid.clearAll(); return; } diff --git a/src/mbgl/renderer/sources/render_raster_dem_source.cpp b/src/mbgl/renderer/sources/render_raster_dem_source.cpp index 2283a0e788..2bc3a91c7c 100644 --- a/src/mbgl/renderer/sources/render_raster_dem_source.cpp +++ b/src/mbgl/renderer/sources/render_raster_dem_source.cpp @@ -38,9 +38,7 @@ void RenderRasterDEMSource::update(Immutable<style::Source::Impl> baseImpl_, maxzoom = tileset->zoomRange.max; // TODO: this removes existing buckets, and will cause flickering. // Should instead refresh tile data in place. - tilePyramid.tiles.clear(); - tilePyramid.renderTiles.clear(); - tilePyramid.cache.clear(); + tilePyramid.clearAll(); } // 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 diff --git a/src/mbgl/renderer/sources/render_raster_source.cpp b/src/mbgl/renderer/sources/render_raster_source.cpp index f97ce4e65b..017763b96a 100644 --- a/src/mbgl/renderer/sources/render_raster_source.cpp +++ b/src/mbgl/renderer/sources/render_raster_source.cpp @@ -36,9 +36,7 @@ void RenderRasterSource::update(Immutable<style::Source::Impl> baseImpl_, // TODO: this removes existing buckets, and will cause flickering. // Should instead refresh tile data in place. - tilePyramid.tiles.clear(); - tilePyramid.renderTiles.clear(); - tilePyramid.cache.clear(); + tilePyramid.clearAll(); } // 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 diff --git a/src/mbgl/renderer/sources/render_vector_source.cpp b/src/mbgl/renderer/sources/render_vector_source.cpp index 4de4f01e3f..61954a68e6 100644 --- a/src/mbgl/renderer/sources/render_vector_source.cpp +++ b/src/mbgl/renderer/sources/render_vector_source.cpp @@ -39,9 +39,7 @@ void RenderVectorSource::update(Immutable<style::Source::Impl> baseImpl_, // TODO: this removes existing buckets, and will cause flickering. // Should instead refresh tile data in place. - tilePyramid.tiles.clear(); - tilePyramid.renderTiles.clear(); - tilePyramid.cache.clear(); + tilePyramid.clearAll(); } // 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 |