summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2020-03-17 18:20:12 +0200
committerMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2020-03-18 18:38:24 +0200
commit75059b217d344e85f8417dcc40585f68fd2e8855 (patch)
treeaadeaaf2027424a3b71436a87003941c937925c8
parent6ceaf89e9ae5758e7fc296d5880453ffb0dc95e5 (diff)
downloadqtlocation-mapboxgl-75059b217d344e85f8417dcc40585f68fd2e8855.tar.gz
[core] Add ImageManager::clear()
-rw-r--r--src/mbgl/renderer/image_manager.cpp11
-rw-r--r--src/mbgl/renderer/image_manager.hpp2
-rw-r--r--src/mbgl/renderer/render_orchestrator.cpp3
3 files changed, 16 insertions, 0 deletions
diff --git a/src/mbgl/renderer/image_manager.cpp b/src/mbgl/renderer/image_manager.cpp
index 4927ade8e9..d862f58742 100644
--- a/src/mbgl/renderer/image_manager.cpp
+++ b/src/mbgl/renderer/image_manager.cpp
@@ -175,6 +175,17 @@ const std::set<std::string>& ImageManager::getAvailableImages() const {
return availableImages;
}
+void ImageManager::clear() {
+ assert(requestors.empty());
+ assert(missingImageRequestors.empty());
+
+ images.clear();
+ availableImages.clear();
+ updatedImageVersions.clear();
+ requestedImages.clear();
+ loaded = false;
+}
+
void ImageManager::checkMissingAndNotify(ImageRequestor& requestor, const ImageRequestPair& pair) {
ImageDependencies missingDependencies;
diff --git a/src/mbgl/renderer/image_manager.hpp b/src/mbgl/renderer/image_manager.hpp
index 7d5884edc1..fec19981f5 100644
--- a/src/mbgl/renderer/image_manager.hpp
+++ b/src/mbgl/renderer/image_manager.hpp
@@ -51,6 +51,8 @@ public:
ImageVersionMap updatedImageVersions;
+ void clear();
+
private:
void checkMissingAndNotify(ImageRequestor&, const ImageRequestPair&);
void notify(ImageRequestor&, const ImageRequestPair&) const;
diff --git a/src/mbgl/renderer/render_orchestrator.cpp b/src/mbgl/renderer/render_orchestrator.cpp
index 0b85f893d7..985aac98b4 100644
--- a/src/mbgl/renderer/render_orchestrator.cpp
+++ b/src/mbgl/renderer/render_orchestrator.cpp
@@ -702,6 +702,7 @@ bool RenderOrchestrator::isLoaded() const {
void RenderOrchestrator::clearData() {
if (!sourceImpls->empty()) sourceImpls = makeMutable<std::vector<Immutable<style::Source::Impl>>>();
if (!layerImpls->empty()) layerImpls = makeMutable<std::vector<Immutable<style::Layer::Impl>>>();
+ if (!imageImpls->empty()) imageImpls = makeMutable<std::vector<Immutable<style::Image::Impl>>>();
renderSources.clear();
renderLayers.clear();
@@ -710,6 +711,8 @@ void RenderOrchestrator::clearData() {
if (!lineAtlas->isEmpty()) lineAtlas = std::make_unique<LineAtlas>();
if (!patternAtlas->isEmpty()) patternAtlas = std::make_unique<PatternAtlas>();
+
+ imageManager->clear();
}
void RenderOrchestrator::onGlyphsError(const FontStack& fontStack, const GlyphRange& glyphRange, std::exception_ptr error) {