summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer
diff options
context:
space:
mode:
authorMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2020-03-18 14:29:46 +0200
committerMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2020-03-18 20:14:15 +0200
commit3536de51244d8f7df3e21b5c5ae4971825ddeb4b (patch)
treef9a1fe249fda27ef4b7c83347e359ba8c5c9e0aa /src/mbgl/renderer
parent14f19f0201a371dc6cf8ddee4b8f0c73bdc5be5d (diff)
downloadqtlocation-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.cpp7
-rw-r--r--src/mbgl/renderer/render_orchestrator.hpp1
-rw-r--r--src/mbgl/renderer/update_parameters.hpp7
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