diff options
Diffstat (limited to 'src/mbgl/renderer/sources/render_custom_geometry_source.cpp')
-rw-r--r-- | src/mbgl/renderer/sources/render_custom_geometry_source.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/mbgl/renderer/sources/render_custom_geometry_source.cpp b/src/mbgl/renderer/sources/render_custom_geometry_source.cpp index ea6f5c3102..a54802b21b 100644 --- a/src/mbgl/renderer/sources/render_custom_geometry_source.cpp +++ b/src/mbgl/renderer/sources/render_custom_geometry_source.cpp @@ -23,7 +23,14 @@ void RenderCustomGeometrySource::update(Immutable<style::Source::Impl> baseImpl_ const TileParameters& parameters) { if (baseImpl != baseImpl_) { std::swap(baseImpl, baseImpl_); - tilePyramid.clearAll(); + + // Clear tile pyramid only if updated source has different tile options, + // zoom range or initialization state for a custom tile loader. + auto newImpl = staticImmutableCast<style::CustomGeometrySource::Impl>(baseImpl); + auto currentImpl = staticImmutableCast<style::CustomGeometrySource::Impl>(baseImpl_); + if (*newImpl != *currentImpl) { + tilePyramid.clearAll(); + } } enabled = needsRendering; |