summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/renderer_impl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/renderer/renderer_impl.cpp')
-rw-r--r--src/mbgl/renderer/renderer_impl.cpp21
1 files changed, 10 insertions, 11 deletions
diff --git a/src/mbgl/renderer/renderer_impl.cpp b/src/mbgl/renderer/renderer_impl.cpp
index 4ca7f3847b..76c45aef76 100644
--- a/src/mbgl/renderer/renderer_impl.cpp
+++ b/src/mbgl/renderer/renderer_impl.cpp
@@ -224,7 +224,7 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
};
std::set<RenderItem> renderItems;
- std::vector<std::reference_wrapper<RenderLayer>> symbolLayers;
+ std::vector<std::reference_wrapper<RenderLayer>> layersNeedPlacement;
auto renderItemsEmplaceHint = renderItems.begin();
// Update all sources and initialize renderItems.
@@ -298,8 +298,8 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
}
RenderLayer& renderLayer = renderItem.layer;
renderLayer.setRenderTiles(renderItem.source->getRenderTiles(), updateParameters.transformState);
- if (const RenderLayerSymbolInterface* symbolLayer = renderLayer.getSymbolInterface()) {
- symbolLayers.push_back(renderLayer);
+ if (renderLayer.needsPlacement()) {
+ layersNeedPlacement.emplace_back(renderLayer);
}
}
@@ -321,13 +321,13 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
updateParameters.transformState.getProjMatrix(projMatrix);
}
- for (auto it = symbolLayers.rbegin(); it != symbolLayers.rend(); ++it) {
- const RenderLayer& symbolLayer = *it;
- if (crossTileSymbolIndex.addLayer(symbolLayer, updateParameters.transformState.getLatLng().longitude())) symbolBucketsChanged = true;
+ for (auto it = layersNeedPlacement.rbegin(); it != layersNeedPlacement.rend(); ++it) {
+ const RenderLayer& layer = *it;
+ if (crossTileSymbolIndex.addLayer(layer, updateParameters.transformState.getLatLng().longitude())) symbolBucketsChanged = true;
if (placementChanged) {
- usedSymbolLayers.insert(symbolLayer.getID());
- placement->placeLayer(symbolLayer, projMatrix, updateParameters.debugOptions & MapDebugOptions::Collision);
+ usedSymbolLayers.insert(layer.getID());
+ placement->placeLayer(layer, projMatrix, updateParameters.debugOptions & MapDebugOptions::Collision);
}
}
@@ -340,9 +340,8 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
}
if (placementChanged || symbolBucketsChanged) {
- for (auto it = symbolLayers.rbegin(); it != symbolLayers.rend(); ++it) {
- const RenderLayer& symbolLayer = *it;
- placement->updateLayerOpacities(symbolLayer);
+ for (auto it = layersNeedPlacement.rbegin(); it != layersNeedPlacement.rend(); ++it) {
+ placement->updateLayerOpacities(*it);
}
}
}