diff options
author | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2020-03-17 18:20:12 +0200 |
---|---|---|
committer | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2020-03-18 20:14:15 +0200 |
commit | 6a68305e1e409699e72726526750becda1a488ae (patch) | |
tree | aadeaaf2027424a3b71436a87003941c937925c8 | |
parent | b48900b0a71a94a1f184df926f6e3fe22f73d647 (diff) | |
download | qtlocation-mapboxgl-6a68305e1e409699e72726526750becda1a488ae.tar.gz |
[core] Add ImageManager::clear()
-rw-r--r-- | src/mbgl/renderer/image_manager.cpp | 11 | ||||
-rw-r--r-- | src/mbgl/renderer/image_manager.hpp | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/render_orchestrator.cpp | 3 |
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) { |