diff options
Diffstat (limited to 'src/mbgl/text')
-rw-r--r-- | src/mbgl/text/cross_tile_symbol_index.cpp | 12 | ||||
-rw-r--r-- | src/mbgl/text/cross_tile_symbol_index.hpp | 1 |
2 files changed, 13 insertions, 0 deletions
diff --git a/src/mbgl/text/cross_tile_symbol_index.cpp b/src/mbgl/text/cross_tile_symbol_index.cpp index 8f4956c4ea..f88bab9d6f 100644 --- a/src/mbgl/text/cross_tile_symbol_index.cpp +++ b/src/mbgl/text/cross_tile_symbol_index.cpp @@ -169,6 +169,18 @@ bool CrossTileSymbolIndex::addLayer(RenderSymbolLayer& symbolLayer) { return symbolBucketsChanged; } +void CrossTileSymbolIndex::pruneUnusedLayers(const std::set<std::string>& usedLayers) { + std::vector<std::string> unusedLayers; + for (auto layerIndex : layerIndexes) { + if (usedLayers.find(layerIndex.first) == usedLayers.end()) { + unusedLayers.push_back(layerIndex.first); + } + } + for (auto unusedLayer : unusedLayers) { + layerIndexes.erase(unusedLayer); + } +} + void CrossTileSymbolIndex::reset() { layerIndexes.clear(); } diff --git a/src/mbgl/text/cross_tile_symbol_index.hpp b/src/mbgl/text/cross_tile_symbol_index.hpp index 5abcde241c..541c2e3661 100644 --- a/src/mbgl/text/cross_tile_symbol_index.hpp +++ b/src/mbgl/text/cross_tile_symbol_index.hpp @@ -57,6 +57,7 @@ public: CrossTileSymbolIndex(); bool addLayer(RenderSymbolLayer&); + void pruneUnusedLayers(const std::set<std::string>&); void reset(); private: |