From 1b795ea19b6d20b3ea5d8e1048541299e8dbf38d Mon Sep 17 00:00:00 2001 From: Bruno de Oliveira Abinader Date: Thu, 12 Jul 2018 14:40:21 +0300 Subject: [core] Do not render symbol layers for pan tiles --- src/mbgl/renderer/tile_pyramid.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/mbgl/renderer/tile_pyramid.cpp b/src/mbgl/renderer/tile_pyramid.cpp index 2bf56b18a8..9f0801801a 100644 --- a/src/mbgl/renderer/tile_pyramid.cpp +++ b/src/mbgl/renderer/tile_pyramid.cpp @@ -100,6 +100,15 @@ void TilePyramid::update(const std::vector>& layer std::vector idealTiles; std::vector panTiles; + bool usePanLayers = true; + std::vector> panLayers; + panLayers.reserve(layers.size()); + for (const auto& layer : layers) { + if (layer->type == LayerType::Symbol) + continue; + panLayers.emplace_back(layer); + } + if (overscaledZoom >= zoomRange.min) { uint8_t idealZoom = std::min(zoomRange.max, overscaledZoom); @@ -141,7 +150,7 @@ void TilePyramid::update(const std::vector>& layer } if (needsRelayout) { - tile.setLayers(layers); + tile.setLayers(usePanLayers ? panLayers : layers); } }; auto getTileFn = [&](const OverscaledTileID& tileID) -> Tile* { @@ -165,7 +174,7 @@ void TilePyramid::update(const std::vector>& layer tile = createTile(tileID); if (tile) { tile->setObserver(observer); - tile->setLayers(layers); + tile->setLayers(usePanLayers ? panLayers : layers); } } if (!tile) { @@ -182,7 +191,7 @@ void TilePyramid::update(const std::vector>& layer auto renderTileFn = [&](const UnwrappedTileID& tileID, Tile& tile) { renderTiles.emplace_back(tileID, tile); previouslyRenderedTiles.erase(tileID); // Still rendering this tile, no need for special fading logic. - tile.markRenderedIdeal(); + if (!usePanLayers) tile.markRenderedIdeal(); }; renderTiles.clear(); @@ -192,6 +201,7 @@ void TilePyramid::update(const std::vector>& layer panTiles, zoomRange, panZoom); } + usePanLayers = false; algorithm::updateRenderables(getTileFn, createTileFn, retainTileFn, renderTileFn, idealTiles, zoomRange, tileZoom); -- cgit v1.2.1