summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/sources/render_custom_geometry_source.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/renderer/sources/render_custom_geometry_source.cpp')
-rw-r--r--src/mbgl/renderer/sources/render_custom_geometry_source.cpp9
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;