diff options
author | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2019-04-10 14:25:09 +0300 |
---|---|---|
committer | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2019-04-17 17:21:41 +0300 |
commit | 150b427300af6425e78a687ce275feae4a7ccc9d (patch) | |
tree | 11af7e9ce4de759e7055dd7918efdc64568f5192 /src/mbgl/tile/geometry_tile.cpp | |
parent | a0c83808c0de3129f0737cfed9f311e062b54b16 (diff) | |
download | qtlocation-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.cpp | 24 |
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) { |