summaryrefslogtreecommitdiff
path: root/src/mbgl/layout
diff options
context:
space:
mode:
authorMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-01-03 17:17:57 +0200
committerMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-01-11 11:30:04 +0200
commit2bdab82dedf545b4272c534b067c68614d0355b7 (patch)
treeee437a1e8f26a25fe2e30d65db3d4e4e2985ae10 /src/mbgl/layout
parent2da9d483ac8bce5bfa7523f9113e1bc4ef2cbfb5 (diff)
downloadqtlocation-mapboxgl-2bdab82dedf545b4272c534b067c68614d0355b7.tar.gz
[core] shader program must always match bucket in render symbol layer
Before this change, `RenderSymbolLayer` with updated style was trying to render symbols using the previous bucket (with paint property binders that matched a previous program). Now, symbol bucket caches the latest corresponding paint properties (caching is happening on complete tiles only). As a result, `RenderSymbolLayer` always picks the shader program and its parameters in sync with the obtained bucket.
Diffstat (limited to 'src/mbgl/layout')
-rw-r--r--src/mbgl/layout/symbol_layout.cpp5
-rw-r--r--src/mbgl/layout/symbol_layout.hpp3
2 files changed, 2 insertions, 6 deletions
diff --git a/src/mbgl/layout/symbol_layout.cpp b/src/mbgl/layout/symbol_layout.cpp
index 332fb3f46a..4acd0a1ccd 100644
--- a/src/mbgl/layout/symbol_layout.cpp
+++ b/src/mbgl/layout/symbol_layout.cpp
@@ -90,10 +90,7 @@ SymbolLayout::SymbolLayout(const BucketParameters& parameters,
}
for (const auto& layer : layers) {
- layerPaintProperties.emplace(layer->getID(), std::make_pair(
- toRenderSymbolLayer(layer)->iconPaintProperties(),
- toRenderSymbolLayer(layer)->textPaintProperties()
- ));
+ layerPaintProperties.emplace(layer->getID(), toRenderSymbolLayer(layer)->evaluated);
}
// Determine glyph dependencies
diff --git a/src/mbgl/layout/symbol_layout.hpp b/src/mbgl/layout/symbol_layout.hpp
index 7045eebc22..ab6dc049a2 100644
--- a/src/mbgl/layout/symbol_layout.hpp
+++ b/src/mbgl/layout/symbol_layout.hpp
@@ -44,8 +44,7 @@ public:
bool hasSymbolInstances() const override;
bool hasDependencies() const override;
- std::map<std::string,
- std::pair<style::IconPaintProperties::PossiblyEvaluated, style::TextPaintProperties::PossiblyEvaluated>> layerPaintProperties;
+ std::map<std::string, style::SymbolPaintProperties::PossiblyEvaluated> layerPaintProperties;
const std::string bucketLeaderID;
std::vector<SymbolInstance> symbolInstances;