diff options
author | Ansis Brammanis <ansis@mapbox.com> | 2018-06-06 22:52:00 -0400 |
---|---|---|
committer | Ansis Brammanis <ansis.brammanis@gmail.com> | 2018-06-07 13:40:17 -0400 |
commit | 58b6c42f5d505204ea96faff812885f0d3723614 (patch) | |
tree | 2f66357d792fd6d55b2b5e99506c98aca5253643 /src/mbgl/renderer | |
parent | 0a15be07aea4a8ba14b0c63a66f5db8066aaacce (diff) | |
download | qtlocation-mapboxgl-58b6c42f5d505204ea96faff812885f0d3723614.tar.gz |
[core] always commit placement to fix #11795
Since placements will be committed even if they do not need the full
fade duration to fade features in, we need the new `fadeStartTime` to
keep track of how long we still need to fade. This is important because
if we fade too long we will trigger another placement and never stop
rendering.
Diffstat (limited to 'src/mbgl/renderer')
-rw-r--r-- | src/mbgl/renderer/renderer_impl.cpp | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/src/mbgl/renderer/renderer_impl.cpp b/src/mbgl/renderer/renderer_impl.cpp index ca9e809977..fea27403c9 100644 --- a/src/mbgl/renderer/renderer_impl.cpp +++ b/src/mbgl/renderer/renderer_impl.cpp @@ -387,6 +387,8 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) { bool placementChanged = false; if (!placement->stillRecent(parameters.timePoint)) { + placementChanged = true; + auto newPlacement = std::make_unique<Placement>(parameters.state, parameters.mapMode); std::set<std::string> usedSymbolLayers; for (auto it = order.rbegin(); it != order.rend(); ++it) { @@ -396,13 +398,9 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) { } } - placementChanged = newPlacement->commit(*placement, parameters.timePoint); + newPlacement->commit(*placement, parameters.timePoint); crossTileSymbolIndex.pruneUnusedLayers(usedSymbolLayers); - if (placementChanged || symbolBucketsChanged) { - placement = std::move(newPlacement); - } - - placement->setRecent(parameters.timePoint); + placement = std::move(newPlacement); updateFadingTiles(); } else { |