From a7fa97e8a36bec7c5d6ec5ae43203012e3357cd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Konstantin=20K=C3=A4fer?= Date: Fri, 11 Nov 2016 17:24:40 +0100 Subject: [PATCH] [core] don't run symbol placement more often than necessary --- src/mbgl/tile/geometry_tile.cpp | 4 ++-- src/mbgl/tile/geometry_tile.hpp | 3 +-- src/mbgl/tile/geometry_tile_worker.cpp | 1 - 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/mbgl/tile/geometry_tile.cpp b/src/mbgl/tile/geometry_tile.cpp index c77467ebc..84455e478 100644 --- a/src/mbgl/tile/geometry_tile.cpp +++ b/src/mbgl/tile/geometry_tile.cpp @@ -57,11 +57,12 @@ void GeometryTile::setData(std::unique_ptr data_) { } void GeometryTile::setPlacementConfig(const PlacementConfig& desiredConfig) { - if (placedConfig == desiredConfig) { + if (requestedConfig == desiredConfig) { return; } ++correlationID; + requestedConfig = desiredConfig; worker.invoke(&GeometryTileWorker::setPlacementConfig, desiredConfig, correlationID); } @@ -112,7 +113,6 @@ void GeometryTile::onPlacement(PlacementResult result) { buckets[bucket.first] = std::move(bucket.second); } featureIndex->setCollisionTile(std::move(result.collisionTile)); - placedConfig = result.placedConfig; observer->onTileChanged(*this); } diff --git a/src/mbgl/tile/geometry_tile.hpp b/src/mbgl/tile/geometry_tile.hpp index cb3ca5463..86243e8a0 100644 --- a/src/mbgl/tile/geometry_tile.hpp +++ b/src/mbgl/tile/geometry_tile.hpp @@ -61,7 +61,6 @@ public: public: std::unordered_map> buckets; std::unique_ptr collisionTile; - PlacementConfig placedConfig; uint64_t correlationID; }; void onPlacement(PlacementResult); @@ -79,7 +78,7 @@ private: Actor worker; uint64_t correlationID = 0; - optional placedConfig; + optional requestedConfig; std::unordered_map> buckets; std::unique_ptr featureIndex; diff --git a/src/mbgl/tile/geometry_tile_worker.cpp b/src/mbgl/tile/geometry_tile_worker.cpp index 6ff3c6779..abb3894d3 100644 --- a/src/mbgl/tile/geometry_tile_worker.cpp +++ b/src/mbgl/tile/geometry_tile_worker.cpp @@ -321,7 +321,6 @@ void GeometryTileWorker::attemptPlacement() { parent.invoke(&GeometryTile::onPlacement, GeometryTile::PlacementResult { std::move(buckets), std::move(collisionTile), - *placementConfig, correlationID }); }