diff --git a/src/mbgl/renderer/painter.cpp b/src/mbgl/renderer/painter.cpp index 5dfced7fe..e4d30ec10 100644 --- a/src/mbgl/renderer/painter.cpp +++ b/src/mbgl/renderer/painter.cpp @@ -161,11 +161,7 @@ void Painter::render(const Style& style, const FrameData& frame_, SpriteAtlas& a // Update all clipping IDs. algorithm::ClipIDGenerator generator; for (const auto& source : sources) { - if (source->type == SourceType::Vector || source->type == SourceType::GeoJSON || - source->type == SourceType::Annotations) { - source->updateClipIDs(generator); - } - source->updateMatrices(projMatrix, state); + source->startRender(generator, projMatrix, state); } drawClippingMasks(generator.getStencils()); diff --git a/src/mbgl/style/source.cpp b/src/mbgl/style/source.cpp index ca0943918..212d6d580 100644 --- a/src/mbgl/style/source.cpp +++ b/src/mbgl/style/source.cpp @@ -22,6 +22,8 @@ #include #include +#include +#include #include @@ -58,7 +60,15 @@ void Source::invalidateTiles() { cache.clear(); } -void Source::updateMatrices(const mat4 &projMatrix, const TransformState &transform) { +void Source::startRender(algorithm::ClipIDGenerator& generator, + const mat4& projMatrix, + const TransformState& transform) { + if (type == SourceType::Vector || + type == SourceType::GeoJSON || + type == SourceType::Annotations) { + generator.update(renderTiles); + } + for (auto& pair : renderTiles) { auto& tile = pair.second; transform.matrixFor(tile.matrix, tile.id); @@ -66,7 +76,7 @@ void Source::updateMatrices(const mat4 &projMatrix, const TransformState &transf } } -void Source::finishRender(Painter &painter) { +void Source::finishRender(Painter& painter) { for (auto& pair : renderTiles) { auto& tile = pair.second; painter.renderTileDebug(tile); diff --git a/src/mbgl/style/source.hpp b/src/mbgl/style/source.hpp index 575297e32..350534e63 100644 --- a/src/mbgl/style/source.hpp +++ b/src/mbgl/style/source.hpp @@ -23,6 +23,10 @@ class TransformState; class RenderTile; struct ClipID; +namespace algorithm { +class ClipIDGenerator; +} // namespace algorithm + namespace style { class Style; @@ -45,13 +49,10 @@ public: // new data available that a tile in the "partial" state might be interested at. bool update(const UpdateParameters&); - template - void updateClipIDs(ClipIDGenerator& generator) { - generator.update(renderTiles); - } - - void updateMatrices(const mat4 &projMatrix, const TransformState &transform); - void finishRender(Painter &painter); + void startRender(algorithm::ClipIDGenerator&, + const mat4& projMatrix, + const TransformState&); + void finishRender(Painter&); const std::map& getRenderTiles() const;