summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/buckets/symbol_bucket.cpp
diff options
context:
space:
mode:
authorMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-09-13 17:37:30 +0300
committerMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-09-19 14:51:32 +0300
commitf997ae00ae960f38d6920a625fcb7237e5909f9c (patch)
tree4478f9e94c4181f68a1d76128e9514800f586d31 /src/mbgl/renderer/buckets/symbol_bucket.cpp
parent80e8d7a2fcb9f75e585bb7dd26c2f2a893b6f560 (diff)
downloadqtlocation-mapboxgl-f997ae00ae960f38d6920a625fcb7237e5909f9c.tar.gz
[core] Fix Placement constness
Update buckets methods do not mutate placement, placement methods do not mutate buckets.
Diffstat (limited to 'src/mbgl/renderer/buckets/symbol_bucket.cpp')
-rw-r--r--src/mbgl/renderer/buckets/symbol_bucket.cpp10
1 files changed, 6 insertions, 4 deletions
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;