[core] don't run symbol placement more often than necessary
This commit is contained in:
@@ -57,11 +57,12 @@ void GeometryTile::setData(std::unique_ptr<const GeometryTileData> 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);
|
||||
}
|
||||
|
||||
|
||||
@@ -61,7 +61,6 @@ public:
|
||||
public:
|
||||
std::unordered_map<std::string, std::unique_ptr<Bucket>> buckets;
|
||||
std::unique_ptr<CollisionTile> collisionTile;
|
||||
PlacementConfig placedConfig;
|
||||
uint64_t correlationID;
|
||||
};
|
||||
void onPlacement(PlacementResult);
|
||||
@@ -79,7 +78,7 @@ private:
|
||||
Actor<GeometryTileWorker> worker;
|
||||
|
||||
uint64_t correlationID = 0;
|
||||
optional<PlacementConfig> placedConfig;
|
||||
optional<PlacementConfig> requestedConfig;
|
||||
|
||||
std::unordered_map<std::string, std::unique_ptr<Bucket>> buckets;
|
||||
std::unique_ptr<FeatureIndex> featureIndex;
|
||||
|
||||
@@ -321,7 +321,6 @@ void GeometryTileWorker::attemptPlacement() {
|
||||
parent.invoke(&GeometryTile::onPlacement, GeometryTile::PlacementResult {
|
||||
std::move(buckets),
|
||||
std::move(collisionTile),
|
||||
*placementConfig,
|
||||
correlationID
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user