diff options
Diffstat (limited to 'src/mbgl/renderer')
-rw-r--r-- | src/mbgl/renderer/renderer_impl.cpp | 13 | ||||
-rw-r--r-- | src/mbgl/renderer/renderer_impl.hpp | 1 |
2 files changed, 14 insertions, 0 deletions
diff --git a/src/mbgl/renderer/renderer_impl.cpp b/src/mbgl/renderer/renderer_impl.cpp index 9fe421fa14..8e5968d4c2 100644 --- a/src/mbgl/renderer/renderer_impl.cpp +++ b/src/mbgl/renderer/renderer_impl.cpp @@ -389,6 +389,10 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) { } placementChanged = newPlacement->commit(*placement, parameters.timePoint); + // commitFeatureIndexes depends on the assumption that no new FeatureIndex has been loaded since placement + // started. If we violate this assumption, then we need to either make CollisionIndex completely independendent of + // FeatureIndex, or find a way for its entries to point to multiple FeatureIndexes. + commitFeatureIndexes(); if (placementChanged || symbolBucketsChanged) { placement = std::move(newPlacement); } @@ -768,6 +772,15 @@ bool Renderer::Impl::hasTransitions(TimePoint timePoint) const { return false; } +void Renderer::Impl::commitFeatureIndexes() { + for (auto& source : renderSources) { + for (auto& renderTile : source.second->getRenderTiles()) { + Tile& tile = renderTile.get().tile; + tile.commitFeatureIndex(); + } + } +} + void Renderer::Impl::updateFadingTiles() { fadingTiles = false; for (auto& source : renderSources) { diff --git a/src/mbgl/renderer/renderer_impl.hpp b/src/mbgl/renderer/renderer_impl.hpp index 5d0200a5df..4f45d514a5 100644 --- a/src/mbgl/renderer/renderer_impl.hpp +++ b/src/mbgl/renderer/renderer_impl.hpp @@ -74,6 +74,7 @@ private: void onTileChanged(RenderSource&, const OverscaledTileID&) override; void onTileError(RenderSource&, const OverscaledTileID&, std::exception_ptr) override; + void commitFeatureIndexes(); void updateFadingTiles(); friend class Renderer; |