diff options
author | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2020-02-10 22:29:11 +0200 |
---|---|---|
committer | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2020-02-11 10:40:30 +0200 |
commit | def38cf4db9e973f1d3e13f4ee2fba1afd694ea0 (patch) | |
tree | 40bce034965b966891c846da92ce4892dc7def92 /src/mbgl/renderer/tile_pyramid.cpp | |
parent | fce4129435ddc5f14abdd1e2ed6a74bf84e1c496 (diff) | |
download | qtlocation-mapboxgl-def38cf4db9e973f1d3e13f4ee2fba1afd694ea0.tar.gz |
[core] Override default prefetch delta if source has it's own setting
Diffstat (limited to 'src/mbgl/renderer/tile_pyramid.cpp')
-rw-r--r-- | src/mbgl/renderer/tile_pyramid.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/mbgl/renderer/tile_pyramid.cpp b/src/mbgl/renderer/tile_pyramid.cpp index 586d3b5a8a..38d984bec4 100644 --- a/src/mbgl/renderer/tile_pyramid.cpp +++ b/src/mbgl/renderer/tile_pyramid.cpp @@ -57,7 +57,8 @@ void TilePyramid::update(const std::vector<Immutable<style::LayerProperties>>& l const uint16_t tileSize, const Range<uint8_t> zoomRange, optional<LatLngBounds> bounds, - std::function<std::unique_ptr<Tile> (const OverscaledTileID&)> createTile) { + std::function<std::unique_ptr<Tile>(const OverscaledTileID&)> createTile, + optional<uint8_t> sourcePrefetchZoomDelta) { // If we need a relayout, abandon any cached tiles; they're now stale. if (needsRelayout) { cache.clear(); @@ -105,8 +106,10 @@ void TilePyramid::update(const std::vector<Immutable<style::LayerProperties>>& l if (parameters.mode == MapMode::Continuous && type != style::SourceType::GeoJSON && type != style::SourceType::Annotations) { // Request lower zoom level tiles (if configured to do so) in an attempt // to show something on the screen faster at the cost of a little of bandwidth. - if (parameters.prefetchZoomDelta) { - panZoom = std::max<int32_t>(tileZoom - parameters.prefetchZoomDelta, zoomRange.min); + const uint8_t prefetchZoomDelta = + sourcePrefetchZoomDelta ? *sourcePrefetchZoomDelta : parameters.prefetchZoomDelta; + if (prefetchZoomDelta) { + panZoom = std::max<int32_t>(tileZoom - prefetchZoomDelta, zoomRange.min); } if (panZoom < idealZoom) { |