diff --git a/src/mbgl/renderer/render_layer.hpp b/src/mbgl/renderer/render_layer.hpp index 2adfcac34..81cf911be 100644 --- a/src/mbgl/renderer/render_layer.hpp +++ b/src/mbgl/renderer/render_layer.hpp @@ -132,10 +132,9 @@ public: bool supportsZoom(float zoom) const; virtual void upload(gfx::UploadPass&) {} - virtual void render(PaintParameters&) {}; + virtual void render(PaintParameters&) {} - // Check wether the given geometry intersects - // with the feature + // Check whether the given geometry intersects with the feature virtual bool queryIntersectsFeature(const GeometryCoordinates&, const GeometryTileFeature&, const float, diff --git a/src/mbgl/renderer/renderer_impl.cpp b/src/mbgl/renderer/renderer_impl.cpp index 4bbc4c390..d4597e27b 100644 --- a/src/mbgl/renderer/renderer_impl.cpp +++ b/src/mbgl/renderer/renderer_impl.cpp @@ -369,6 +369,19 @@ void Renderer::Impl::render(const RenderTree& renderTree, parameters.currentLayer = maxLayerIndex - layerGroup.getLayerIndex(); layerGroup.render(orchestrator, parameters); }); + + // Finally, render any legacy layers which have not been converted to drawables. + // Note that they may be out of order, this is just a temporary fix for `RenderLocationIndicatorLayer` (#2216) + parameters.depthRangeSize = 1 - (layerRenderItems.size() + 2) * PaintParameters::numSublayers * + PaintParameters::depthEpsilon; + int32_t i = static_cast(layerRenderItems.size()) - 1; + for (auto it = layerRenderItems.begin(); it != layerRenderItems.end() && i >= 0; ++it, --i) { + parameters.currentLayer = i; + const RenderItem& item = *it; + if (item.hasRenderPass(parameters.pass)) { + item.render(parameters); + } + } }; #endif