diff options
author | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2019-05-06 11:31:23 +0300 |
---|---|---|
committer | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2019-05-21 06:49:17 -0700 |
commit | 100eb61fa4e8a4a83dfbe1c3a17c8468dfb4a1ca (patch) | |
tree | e091ddfae54b8614cc9df06ae7ed8ac27385199b | |
parent | d24524440c949e02dddfbd9e4b23eb4e23ea9e69 (diff) | |
download | qtlocation-mapboxgl-100eb61fa4e8a4a83dfbe1c3a17c8468dfb4a1ca.tar.gz |
[core] Forward ImageManagerObserver::onRemoveUnusedStyleImages to MapObserver interface
-rw-r--r-- | include/mbgl/map/map_observer.hpp | 3 | ||||
-rw-r--r-- | include/mbgl/renderer/renderer_observer.hpp | 1 | ||||
-rw-r--r-- | src/mbgl/map/map_impl.cpp | 8 | ||||
-rw-r--r-- | src/mbgl/map/map_impl.hpp | 1 | ||||
-rw-r--r-- | src/mbgl/renderer/renderer_impl.cpp | 4 | ||||
-rw-r--r-- | src/mbgl/renderer/renderer_impl.hpp | 1 |
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(); |