summaryrefslogtreecommitdiff
path: root/src/mbgl/text/cross_tile_symbol_index.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/text/cross_tile_symbol_index.cpp')
-rw-r--r--src/mbgl/text/cross_tile_symbol_index.cpp33
1 files changed, 9 insertions, 24 deletions
diff --git a/src/mbgl/text/cross_tile_symbol_index.cpp b/src/mbgl/text/cross_tile_symbol_index.cpp
index 3af583ebd3..780a0f551d 100644
--- a/src/mbgl/text/cross_tile_symbol_index.cpp
+++ b/src/mbgl/text/cross_tile_symbol_index.cpp
@@ -164,36 +164,21 @@ bool CrossTileSymbolLayerIndex::removeStaleBuckets(const std::unordered_set<uint
CrossTileSymbolIndex::CrossTileSymbolIndex() = default;
-bool CrossTileSymbolIndex::addLayer(const RenderLayerSymbolInterface& symbolInterface, float lng) {
-
- auto& layerIndex = layerIndexes[symbolInterface.layerID()];
+bool CrossTileSymbolIndex::addLayer(const RenderLayer& layer, float lng) {
+ auto& layerIndex = layerIndexes[layer.getID()];
bool symbolBucketsChanged = false;
std::unordered_set<uint32_t> currentBucketIDs;
layerIndex.handleWrapJump(lng);
- for (const RenderTile& renderTile : symbolInterface.getRenderTiles()) {
- assert(renderTile.tile.isRenderable());
-
- auto bucket = symbolInterface.getSymbolBucket(renderTile);
- if (!bucket) {
- continue;
- }
- SymbolBucket& symbolBucket = *bucket;
-
- if (symbolBucket.bucketLeaderID != symbolInterface.layerID()) {
- // Only add this layer if it's the "group leader" for the bucket
- continue;
- }
-
- if (!symbolBucket.bucketInstanceId) {
- symbolBucket.bucketInstanceId = ++maxBucketInstanceId;
- }
-
- const bool bucketAdded = layerIndex.addBucket(renderTile.tile.id, symbolBucket, maxCrossTileID);
- symbolBucketsChanged = symbolBucketsChanged || bucketAdded;
- currentBucketIDs.insert(symbolBucket.bucketInstanceId);
+ for (const auto& item : layer.getPlacementData()) {
+ RenderTile& renderTile = item.tile;
+ Bucket& bucket = item.bucket;
+ auto result = bucket.registerAtCrossTileIndex(layerIndex, renderTile.tile.id, maxCrossTileID);
+ assert(result.first != 0u);
+ symbolBucketsChanged = symbolBucketsChanged || result.second;
+ currentBucketIDs.insert(result.first);
}
if (layerIndex.removeStaleBuckets(currentBucketIDs)) {