summaryrefslogtreecommitdiff
path: root/src/mbgl/tile/geometry_tile.cpp
diff options
context:
space:
mode:
authorMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-04-10 14:25:09 +0300
committerMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-04-17 17:21:41 +0300
commit150b427300af6425e78a687ce275feae4a7ccc9d (patch)
tree11af7e9ce4de759e7055dd7918efdc64568f5192 /src/mbgl/tile/geometry_tile.cpp
parenta0c83808c0de3129f0737cfed9f311e062b54b16 (diff)
downloadqtlocation-mapboxgl-150b427300af6425e78a687ce275feae4a7ccc9d.tar.gz
[core] Update `style::LayerProperties` instances in tiles
Diffstat (limited to 'src/mbgl/tile/geometry_tile.cpp')
-rw-r--r--src/mbgl/tile/geometry_tile.cpp24
1 files changed, 21 insertions, 3 deletions
diff --git a/src/mbgl/tile/geometry_tile.cpp b/src/mbgl/tile/geometry_tile.cpp
index 109b6377e1..792586e73d 100644
--- a/src/mbgl/tile/geometry_tile.cpp
+++ b/src/mbgl/tile/geometry_tile.cpp
@@ -206,16 +206,34 @@ Bucket* GeometryTile::getBucket(const Layer::Impl& layer) const {
}
const LayerRenderData* GeometryTile::getLayerRenderData(const style::Layer::Impl& layerImpl) const {
- const auto it = layerIdToLayerRenderData.find(layerImpl.id);
+ auto* that = const_cast<GeometryTile*>(this);
+ return that->getMutableLayerRenderData(layerImpl);
+}
+
+bool GeometryTile::updateLayerProperties(const Immutable<style::LayerProperties>& layerProperties) {
+ LayerRenderData* renderData = getMutableLayerRenderData(*layerProperties->baseImpl);
+ if (!renderData) {
+ return false;
+ }
+
+ if (renderData->layerProperties != layerProperties) {
+ renderData->layerProperties = layerProperties;
+ }
+
+ return true;
+}
+
+LayerRenderData* GeometryTile::getMutableLayerRenderData(const style::Layer::Impl& layerImpl) {
+ auto it = layerIdToLayerRenderData.find(layerImpl.id);
if (it == layerIdToLayerRenderData.end()) {
return nullptr;
}
- const LayerRenderData& result = it->second;
+ LayerRenderData& result = it->second;
if (result.layerProperties->baseImpl->getTypeInfo() != layerImpl.getTypeInfo()) {
// Layer data might be outdated, see issue #12432.
return nullptr;
}
- return &result;
+ return &result;
}
float GeometryTile::getQueryPadding(const std::vector<const RenderLayer*>& layers) {