diff options
-rw-r--r-- | src/mbgl/map/map.cpp | 16 | ||||
-rw-r--r-- | src/mbgl/renderer/renderer_impl.cpp | 11 |
2 files changed, 20 insertions, 7 deletions
diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp index 324bcc8b5d..bfedfe1326 100644 --- a/src/mbgl/map/map.cpp +++ b/src/mbgl/map/map.cpp @@ -687,14 +687,22 @@ void Map::Impl::onInvalidate() { } void Map::Impl::onUpdate(Update flags) { - TimePoint timePoint = mode == MapMode::Continuous ? Clock::now() : Clock::time_point::max(); - - transform.updateTransitions(timePoint); - if (flags & Update::AnnotationData) { annotationManager.updateData(); } + // Avoid redundant update calls in still mode if: + // - It has not been explicitly requested (no still image request); or + // - Style is not loaded yet + if (mode == MapMode::Still + && (!stillImageRequest || !style->impl->isLoaded())) { + return; + } + + TimePoint timePoint = mode == MapMode::Continuous ? Clock::now() : Clock::time_point::max(); + + transform.updateTransitions(timePoint); + UpdateParameters params = { style->impl->isLoaded(), mode, diff --git a/src/mbgl/renderer/renderer_impl.cpp b/src/mbgl/renderer/renderer_impl.cpp index 21ff8ed478..780a30f271 100644 --- a/src/mbgl/renderer/renderer_impl.cpp +++ b/src/mbgl/renderer/renderer_impl.cpp @@ -67,9 +67,14 @@ void Renderer::Impl::setObserver(RendererObserver* observer_) { } void Renderer::Impl::render(const UpdateParameters& updateParameters) { - // Don't load/render anyting in still mode until explicitly requested. - if (updateParameters.mode == MapMode::Still && !updateParameters.stillImageRequest) return; - + // Avoid redundant render calls in still mode if: + // - It has not been explicitly requested (no still image request); or + // - Style is not loaded yet + if (updateParameters.mode == MapMode::Still + && (!updateParameters.stillImageRequest || !updateParameters.styleLoaded)) { + return; + } + assert(BackendScope::exists()); const bool zoomChanged = zoomHistory.update(updateParameters.transformState.getZoom(), updateParameters.timePoint); |