[core] Add ImageManager::clear()

This commit is contained in:
Mikhail Pozdnyakov
2020-03-17 18:20:12 +02:00
parent b48900b0a7
commit 6a68305e1e
3 changed files with 16 additions and 0 deletions

View File

@@ -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;

View File

@@ -51,6 +51,8 @@ public:
ImageVersionMap updatedImageVersions;
void clear();
private:
void checkMissingAndNotify(ImageRequestor&, const ImageRequestPair&);
void notify(ImageRequestor&, const ImageRequestPair&) const;

View File

@@ -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) {