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 3f9b59a14a..f987bb8666 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<const RenderLayerSymbolInterface*> renderItemsWithSymbols;
+ std::vector<std::reference_wrapper<RenderLayer>> symbolLayers;
auto renderItemsEmplaceHint = renderItems.begin();
// Update all sources and initialize renderItems.
@@ -299,7 +299,7 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
RenderLayer& renderLayer = renderItem.layer;
renderLayer.setRenderTiles(renderItem.source->getRenderTiles(), updateParameters.transformState);
if (const RenderLayerSymbolInterface* symbolLayer = renderLayer.getSymbolInterface()) {
- renderItemsWithSymbols.push_back(symbolLayer);
+ symbolLayers.push_back(renderLayer);
}
}
@@ -320,15 +320,15 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
std::move(placement));
}
- for (auto it = renderItemsWithSymbols.rbegin(); it != renderItemsWithSymbols.rend(); ++it) {
- const RenderLayerSymbolInterface *symbolLayer = *it;
- if (crossTileSymbolIndex.addLayer(*symbolLayer, updateParameters.transformState.getLatLng().longitude())) symbolBucketsChanged = true;
+ for (auto it = symbolLayers.rbegin(); it != symbolLayers.rend(); ++it) {
+ const RenderLayer& symbolLayer = *it;
+ if (crossTileSymbolIndex.addLayer(symbolLayer, updateParameters.transformState.getLatLng().longitude())) symbolBucketsChanged = true;
if (placementChanged) {
- usedSymbolLayers.insert(symbolLayer->layerID());
+ usedSymbolLayers.insert(symbolLayer.getID());
mat4 projMatrix;
updateParameters.transformState.getProjMatrix(projMatrix);
- placement->placeLayer(*symbolLayer, projMatrix, updateParameters.debugOptions & MapDebugOptions::Collision);
+ placement->placeLayer(*symbolLayer.getSymbolInterface(), projMatrix, updateParameters.debugOptions & MapDebugOptions::Collision);
}
}
@@ -340,11 +340,10 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
placement->setStale();
}
-
if (placementChanged || symbolBucketsChanged) {
- for (auto it = renderItemsWithSymbols.rbegin(); it != renderItemsWithSymbols.rend(); ++it) {
- const RenderLayerSymbolInterface *symbolLayer = *it;
- placement->updateLayerOpacities(*symbolLayer);
+ for (auto it = symbolLayers.rbegin(); it != symbolLayers.rend(); ++it) {
+ const RenderLayer& symbolLayer = *it;
+ placement->updateLayerOpacities(*symbolLayer.getSymbolInterface());
}
}
}