[core] don't run symbol placement more often than necessary

This commit is contained in:
Konstantin Käfer
2016-11-11 17:24:40 +01:00
committed by Jesse Bounds
parent 44e398865e
commit f968ede11b
3 changed files with 3 additions and 5 deletions

View File

@@ -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);
}

View File

@@ -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;

View File

@@ -321,7 +321,6 @@ void GeometryTileWorker::attemptPlacement() {
parent.invoke(&GeometryTile::onPlacement, GeometryTile::PlacementResult {
std::move(buckets),
std::move(collisionTile),
*placementConfig,
correlationID
});
}