diff options
author | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2020-03-18 14:29:46 +0200 |
---|---|---|
committer | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2020-03-18 20:14:15 +0200 |
commit | 3536de51244d8f7df3e21b5c5ae4971825ddeb4b (patch) | |
tree | f9a1fe249fda27ef4b7c83347e359ba8c5c9e0aa /src/mbgl/renderer | |
parent | 14f19f0201a371dc6cf8ddee4b8f0c73bdc5be5d (diff) | |
download | qtlocation-mapboxgl-3536de51244d8f7df3e21b5c5ae4971825ddeb4b.tar.gz |
[core][tile|static mode] Introduce MapOptions::keepRenderData() flag
Render orchestrator stores the render data between render frames if this flag is set.
Diffstat (limited to 'src/mbgl/renderer')
-rw-r--r-- | src/mbgl/renderer/render_orchestrator.cpp | 7 | ||||
-rw-r--r-- | src/mbgl/renderer/render_orchestrator.hpp | 1 | ||||
-rw-r--r-- | src/mbgl/renderer/update_parameters.hpp | 7 |
3 files changed, 13 insertions, 2 deletions
diff --git a/src/mbgl/renderer/render_orchestrator.cpp b/src/mbgl/renderer/render_orchestrator.cpp index 7fb6eff29c..5851da98eb 100644 --- a/src/mbgl/renderer/render_orchestrator.cpp +++ b/src/mbgl/renderer/render_orchestrator.cpp @@ -141,6 +141,13 @@ std::unique_ptr<RenderTree> RenderOrchestrator::createRenderTree( if (!isMapModeContinuous) { // Reset zoom history state. zoomHistory.first = true; + if (!updateParameters->keepRenderData && stillImageRequest != updateParameters->stillImageRequest) { + sourceImpls = makeMutable<std::vector<Immutable<style::Source::Impl>>>(); + layerImpls = makeMutable<std::vector<Immutable<style::Layer::Impl>>>(); + renderSources.clear(); + renderLayers.clear(); + stillImageRequest = updateParameters->stillImageRequest; + } } if (LayerManager::annotationsEnabled) { diff --git a/src/mbgl/renderer/render_orchestrator.hpp b/src/mbgl/renderer/render_orchestrator.hpp index 4983538749..7ede688dd7 100644 --- a/src/mbgl/renderer/render_orchestrator.hpp +++ b/src/mbgl/renderer/render_orchestrator.hpp @@ -126,6 +126,7 @@ private: const bool backgroundLayerAsColor; bool contextLost = false; + const void* stillImageRequest = nullptr; // Vectors with reserved capacity of layerImpls->size() to avoid reallocation // on each frame. diff --git a/src/mbgl/renderer/update_parameters.hpp b/src/mbgl/renderer/update_parameters.hpp index 8dd256329a..fbdebc4197 100644 --- a/src/mbgl/renderer/update_parameters.hpp +++ b/src/mbgl/renderer/update_parameters.hpp @@ -41,9 +41,12 @@ public: const uint8_t prefetchZoomDelta; // For still image requests, render requested - const bool stillImageRequest; - + const void* stillImageRequest; + const bool crossSourceCollisions; + + // If set, the render data from the previous render calls is kept. + const bool keepRenderData; }; } // namespace mbgl |