diff options
Diffstat (limited to 'src/mbgl/renderer')
-rw-r--r-- | src/mbgl/renderer/bucket.hpp | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/buckets/symbol_bucket.cpp | 10 | ||||
-rw-r--r-- | src/mbgl/renderer/buckets/symbol_bucket.hpp | 4 |
3 files changed, 9 insertions, 7 deletions
diff --git a/src/mbgl/renderer/bucket.hpp b/src/mbgl/renderer/bucket.hpp index 6c74b8309f..3dae53408b 100644 --- a/src/mbgl/renderer/bucket.hpp +++ b/src/mbgl/renderer/bucket.hpp @@ -61,7 +61,7 @@ public: } // Places this bucket to the given placement. virtual void place(Placement&, const BucketPlacementParameters&, std::set<uint32_t>&) {} - virtual void updateVertices(Placement&, bool /*updateOpacities*/, const TransformState&, const RenderTile&, std::set<uint32_t>&) {} + virtual void updateVertices(const Placement&, bool /*updateOpacities*/, const TransformState&, const RenderTile&, std::set<uint32_t>&) {} protected: Bucket() = default; diff --git a/src/mbgl/renderer/buckets/symbol_bucket.cpp b/src/mbgl/renderer/buckets/symbol_bucket.cpp index ff201e9c2c..c3e4adfab6 100644 --- a/src/mbgl/renderer/buckets/symbol_bucket.cpp +++ b/src/mbgl/renderer/buckets/symbol_bucket.cpp @@ -232,14 +232,14 @@ void SymbolBucket::sortFeatures(const float angle) { icon.triangles.clear(); sdfIcon.triangles.clear(); - featureSortOrder = std::make_unique<std::vector<size_t>>(); - featureSortOrder->reserve(symbolInstances.size()); + auto symbolsSortOrder = std::make_unique<std::vector<size_t>>(); + symbolsSortOrder->reserve(symbolInstances.size()); // If the symbols are allowed to overlap sort them by their vertical screen position. // The index array buffer is rewritten to reference the (unchanged) vertices in the // sorted order. for (const SymbolInstance& symbolInstance : getSortedSymbols(angle)) { - featureSortOrder->push_back(symbolInstance.dataFeatureIndex); + symbolsSortOrder->push_back(symbolInstance.dataFeatureIndex); if (symbolInstance.placedRightTextIndex) { addPlacedSymbol(text.triangles, text.placedSymbols[*symbolInstance.placedRightTextIndex]); @@ -266,6 +266,8 @@ void SymbolBucket::sortFeatures(const float angle) { addPlacedSymbol(iconBuffer.triangles, iconBuffer.placedSymbols[*symbolInstance.placedVerticalIconIndex]); } } + + featureSortOrder = std::move(symbolsSortOrder); } std::vector<std::reference_wrapper<const SymbolInstance>> SymbolBucket::getSortedSymbols(const float angle) const { @@ -301,7 +303,7 @@ void SymbolBucket::place(Placement& placement, const BucketPlacementParameters& placement.placeBucket(*this, params, seenIds); } -void SymbolBucket::updateVertices(Placement& placement, bool updateOpacities, const TransformState& state, const RenderTile& tile, std::set<uint32_t>& seenIds) { +void SymbolBucket::updateVertices(const Placement& placement, bool updateOpacities, const TransformState& state, const RenderTile& tile, std::set<uint32_t>& seenIds) { if (updateOpacities) { placement.updateBucketOpacities(*this, state, seenIds); placementChangesUploaded = false; diff --git a/src/mbgl/renderer/buckets/symbol_bucket.hpp b/src/mbgl/renderer/buckets/symbol_bucket.hpp index 020190b81f..c2bbcd40a0 100644 --- a/src/mbgl/renderer/buckets/symbol_bucket.hpp +++ b/src/mbgl/renderer/buckets/symbol_bucket.hpp @@ -68,7 +68,7 @@ public: bool hasData() const override; std::pair<uint32_t, bool> registerAtCrossTileIndex(CrossTileSymbolLayerIndex&, const OverscaledTileID&, uint32_t& maxCrossTileID) override; void place(Placement&, const BucketPlacementParameters&, std::set<uint32_t>&) override; - void updateVertices(Placement&, bool updateOpacities, const TransformState&, const RenderTile&, std::set<uint32_t>&) override; + void updateVertices(const Placement&, bool updateOpacities, const TransformState&, const RenderTile&, std::set<uint32_t>&) override; bool hasTextData() const; bool hasIconData() const; bool hasSdfIconData() const; @@ -176,7 +176,7 @@ public: const std::vector<style::TextWritingModeType> placementModes; mutable optional<bool> hasFormatSectionOverrides_; - std::shared_ptr<std::vector<size_t>> featureSortOrder; + FeatureSortOrder featureSortOrder; }; } // namespace mbgl |