summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Shalamov <alexander.shalamov@mapbox.com>2019-05-06 11:31:23 +0300
committerAlexander Shalamov <alexander.shalamov@mapbox.com>2019-05-21 06:49:17 -0700
commit100eb61fa4e8a4a83dfbe1c3a17c8468dfb4a1ca (patch)
treee091ddfae54b8614cc9df06ae7ed8ac27385199b
parentd24524440c949e02dddfbd9e4b23eb4e23ea9e69 (diff)
downloadqtlocation-mapboxgl-100eb61fa4e8a4a83dfbe1c3a17c8468dfb4a1ca.tar.gz
[core] Forward ImageManagerObserver::onRemoveUnusedStyleImages to MapObserver interface
-rw-r--r--include/mbgl/map/map_observer.hpp3
-rw-r--r--include/mbgl/renderer/renderer_observer.hpp1
-rw-r--r--src/mbgl/map/map_impl.cpp8
-rw-r--r--src/mbgl/map/map_impl.hpp1
-rw-r--r--src/mbgl/renderer/renderer_impl.cpp4
-rw-r--r--src/mbgl/renderer/renderer_impl.hpp1
6 files changed, 18 insertions, 0 deletions
diff --git a/include/mbgl/map/map_observer.hpp b/include/mbgl/map/map_observer.hpp
index 75e389df9f..a79f5ac82d 100644
--- a/include/mbgl/map/map_observer.hpp
+++ b/include/mbgl/map/map_observer.hpp
@@ -48,6 +48,9 @@ public:
virtual void onSourceChanged(style::Source&) {}
virtual void onDidBecomeIdle() {}
virtual void onStyleImageMissing(const std::string&) {}
+ // This method should return true if unused image can be removed,
+ // false otherwise. By default, unused image will be removed.
+ virtual bool onCanRemoveUnusedStyleImage(const std::string&) { return true; }
};
} // namespace mbgl
diff --git a/include/mbgl/renderer/renderer_observer.hpp b/include/mbgl/renderer/renderer_observer.hpp
index 1a9d3ff9bc..4d21a0aaee 100644
--- a/include/mbgl/renderer/renderer_observer.hpp
+++ b/include/mbgl/renderer/renderer_observer.hpp
@@ -35,6 +35,7 @@ public:
// Style is missing an image
using StyleImageMissingCallback = std::function<void()>;
virtual void onStyleImageMissing(const std::string&, StyleImageMissingCallback done) { done(); }
+ virtual void onRemoveUnusedStyleImages(const std::vector<std::string>&) {}
};
} // namespace mbgl
diff --git a/src/mbgl/map/map_impl.cpp b/src/mbgl/map/map_impl.cpp
index d7c7c00d0a..ce36583ab3 100644
--- a/src/mbgl/map/map_impl.cpp
+++ b/src/mbgl/map/map_impl.cpp
@@ -179,4 +179,12 @@ void Map::Impl::onStyleImageMissing(const std::string& id, std::function<void()>
onUpdate();
}
+void Map::Impl::onRemoveUnusedStyleImages(const std::vector<std::string>& unusedImageIDs) {
+ for (const auto& unusedImageID : unusedImageIDs) {
+ if (observer.onCanRemoveUnusedStyleImage(unusedImageID)) {
+ style->removeImage(unusedImageID);
+ }
+ }
+}
+
} // namespace mbgl
diff --git a/src/mbgl/map/map_impl.hpp b/src/mbgl/map/map_impl.hpp
index 84b43c8343..13a68fb25e 100644
--- a/src/mbgl/map/map_impl.hpp
+++ b/src/mbgl/map/map_impl.hpp
@@ -46,6 +46,7 @@ public:
void onWillStartRenderingMap() final;
void onDidFinishRenderingMap() final;
void onStyleImageMissing(const std::string&, std::function<void()>) final;
+ void onRemoveUnusedStyleImages(const std::vector<std::string>&) final;
// Map
void jumpTo(const CameraOptions&);
diff --git a/src/mbgl/renderer/renderer_impl.cpp b/src/mbgl/renderer/renderer_impl.cpp
index 6647cecb94..c32a1589b8 100644
--- a/src/mbgl/renderer/renderer_impl.cpp
+++ b/src/mbgl/renderer/renderer_impl.cpp
@@ -762,4 +762,8 @@ void Renderer::Impl::onStyleImageMissing(const std::string& id, std::function<vo
observer->onStyleImageMissing(id, std::move(done));
}
+void Renderer::Impl::onRemoveUnusedStyleImages(const std::vector<std::string>& unusedImageIDs) {
+ observer->onRemoveUnusedStyleImages(unusedImageIDs);
+}
+
} // namespace mbgl
diff --git a/src/mbgl/renderer/renderer_impl.hpp b/src/mbgl/renderer/renderer_impl.hpp
index 270ea4d517..84191b85a6 100644
--- a/src/mbgl/renderer/renderer_impl.hpp
+++ b/src/mbgl/renderer/renderer_impl.hpp
@@ -91,6 +91,7 @@ private:
// ImageManagerObserver implementation
void onStyleImageMissing(const std::string&, std::function<void()>) override;
+ void onRemoveUnusedStyleImages(const std::vector<std::string>&) final;
void updateFadingTiles();