summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/render_orchestrator.cpp
diff options
context:
space:
mode:
authorMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-09-13 11:21:27 +0300
committerMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-09-13 13:45:48 +0300
commit0d9e4afd20f4e28479fcc725b7579d66477ed07a (patch)
tree25a156d76a5e0faf241e05aa55b0eca9743210fd /src/mbgl/renderer/render_orchestrator.cpp
parentfc741cdd211c5eb010fa5eb220b13b1f42bf8bde (diff)
downloadqtlocation-mapboxgl-0d9e4afd20f4e28479fcc725b7579d66477ed07a.tar.gz
[core] Coalesce buckets updates from several tiles
Diffstat (limited to 'src/mbgl/renderer/render_orchestrator.cpp')
-rw-r--r--src/mbgl/renderer/render_orchestrator.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/mbgl/renderer/render_orchestrator.cpp b/src/mbgl/renderer/render_orchestrator.cpp
index 1e2541c4d4..a62ccb0a0a 100644
--- a/src/mbgl/renderer/render_orchestrator.cpp
+++ b/src/mbgl/renderer/render_orchestrator.cpp
@@ -367,7 +367,11 @@ std::unique_ptr<RenderTree> RenderOrchestrator::createRenderTree(const UpdatePar
symbolBucketsAdded = symbolBucketsAdded || (result & CrossTileSymbolIndex::AddLayerResult::BucketsAdded);
symbolBucketsChanged = symbolBucketsChanged || (result != CrossTileSymbolIndex::AddLayerResult::NoChanges);
}
- renderTreeParameters->placementChanged = !placement->stillRecent(updateParameters.timePoint, updateParameters.transformState.getZoom()) || symbolBucketsAdded;
+ // We want new symbols to show up faster, however simple setting `placementChanged` to `true` would
+ // initiate placement too often as new buckets ususally come from several rendered tiles in a row within
+ // a short period of time. Instead, we squeeze placement update period to coalesce buckets updates from several tiles.
+ if (symbolBucketsAdded) placement->setMaximumUpdatePeriod(Milliseconds(30));
+ renderTreeParameters->placementChanged = !placement->stillRecent(updateParameters.timePoint, updateParameters.transformState.getZoom());
std::set<std::string> usedSymbolLayers;
if (renderTreeParameters->placementChanged) {