diff options
-rw-r--r-- | src/mbgl/map/map.cpp | 17 | ||||
-rw-r--r-- | src/mbgl/style/observer.hpp | 9 | ||||
-rw-r--r-- | src/mbgl/style/source_impl.cpp | 4 | ||||
-rw-r--r-- | src/mbgl/style/source_impl.hpp | 2 | ||||
-rw-r--r-- | src/mbgl/style/source_observer.hpp | 3 | ||||
-rw-r--r-- | src/mbgl/style/style.cpp | 12 | ||||
-rw-r--r-- | src/mbgl/style/style.hpp | 2 | ||||
-rw-r--r-- | src/mbgl/tile/geometry_tile.cpp | 2 | ||||
-rw-r--r-- | src/mbgl/tile/tile.cpp | 2 | ||||
-rw-r--r-- | src/mbgl/tile/tile_observer.hpp | 2 | ||||
-rw-r--r-- | test/src/mbgl/test/stub_style_observer.hpp | 6 |
11 files changed, 28 insertions, 33 deletions
diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp index 5c58893b5a..fe0be15b87 100644 --- a/src/mbgl/map/map.cpp +++ b/src/mbgl/map/map.cpp @@ -37,7 +37,7 @@ class Map::Impl : public style::Observer { public: Impl(View&, FileSource&, MapMode, GLContextMode, ConstrainMode, ViewportMode); - void onNeedsRepaint() override; + void onUpdate(Update) override; void onStyleError() override; void onResourceError(std::exception_ptr) override; @@ -149,12 +149,7 @@ void Map::renderStill(StillImageCallback callback) { } void Map::update(Update flags) { - if (flags & Update::Dimensions) { - impl->transform.resize(impl->view.getSize()); - } - - impl->updateFlags |= flags; - impl->asyncUpdate.send(); + impl->onUpdate(flags); } void Map::render() { @@ -905,8 +900,12 @@ void Map::onLowMemory() { impl->view.invalidate(); } -void Map::Impl::onNeedsRepaint() { - updateFlags |= Update::Repaint; +void Map::Impl::onUpdate(Update flags) { + if (flags & Update::Dimensions) { + transform.resize(view.getSize()); + } + + updateFlags |= flags; asyncUpdate.send(); } diff --git a/src/mbgl/style/observer.hpp b/src/mbgl/style/observer.hpp index c4d31ae249..41b1b46da7 100644 --- a/src/mbgl/style/observer.hpp +++ b/src/mbgl/style/observer.hpp @@ -3,6 +3,7 @@ #include <mbgl/text/glyph_store_observer.hpp> #include <mbgl/sprite/sprite_store_observer.hpp> #include <mbgl/style/source_observer.hpp> +#include <mbgl/map/update.hpp> namespace mbgl { namespace style { @@ -11,13 +12,7 @@ class Observer : public GlyphStoreObserver, public SpriteStoreObserver, public SourceObserver { public: - /** - * In addition to the individual glyph, sprite, and source events, the - * following "rollup" events are provided for convenience. They are - * strictly additive; e.g. when a source is loaded, both `onSourceLoaded` - * and `onNeedsRepaint` will be called. - */ - void onNeedsRepaint() override {} + virtual void onUpdate(Update) {} virtual void onStyleError() {} virtual void onResourceError(std::exception_ptr) {} }; diff --git a/src/mbgl/style/source_impl.cpp b/src/mbgl/style/source_impl.cpp index d5e33caa55..45cc27ef1f 100644 --- a/src/mbgl/style/source_impl.cpp +++ b/src/mbgl/style/source_impl.cpp @@ -266,8 +266,8 @@ void Source::Impl::onTileError(Tile& tile, std::exception_ptr error) { observer->onTileError(base, tile.id, error); } -void Source::Impl::onNeedsRepaint() { - observer->onNeedsRepaint(); +void Source::Impl::onTileUpdated(Tile& tile) { + observer->onTileUpdated(base, tile.id); } void Source::Impl::dumpDebugLogs() const { diff --git a/src/mbgl/style/source_impl.hpp b/src/mbgl/style/source_impl.hpp index 93add4ad13..52b2e46a38 100644 --- a/src/mbgl/style/source_impl.hpp +++ b/src/mbgl/style/source_impl.hpp @@ -86,7 +86,7 @@ private: // TileObserver implementation. void onTileLoaded(Tile&, bool isNewTile) override; void onTileError(Tile&, std::exception_ptr) override; - void onNeedsRepaint() override; + void onTileUpdated(Tile&) override; virtual uint16_t getTileSize() const = 0; virtual Range<uint8_t> getZoomRange() = 0; diff --git a/src/mbgl/style/source_observer.hpp b/src/mbgl/style/source_observer.hpp index 020ead4dba..8c353e4d82 100644 --- a/src/mbgl/style/source_observer.hpp +++ b/src/mbgl/style/source_observer.hpp @@ -16,9 +16,10 @@ public: virtual void onSourceLoaded(Source&) {} virtual void onSourceError(Source&, std::exception_ptr) {} + virtual void onTileLoaded(Source&, const OverscaledTileID&, bool /* isNewTile */) {} virtual void onTileError(Source&, const OverscaledTileID&, std::exception_ptr) {} - virtual void onNeedsRepaint() {} + virtual void onTileUpdated(Source&, const OverscaledTileID&) {} }; } // namespace style diff --git a/src/mbgl/style/style.cpp b/src/mbgl/style/style.cpp index 20202cbcf4..bb0e2b61f6 100644 --- a/src/mbgl/style/style.cpp +++ b/src/mbgl/style/style.cpp @@ -423,7 +423,7 @@ void Style::setObserver(style::Observer* observer_) { void Style::onGlyphsLoaded(const FontStack& fontStack, const GlyphRange& glyphRange) { shouldReparsePartialTiles = true; observer->onGlyphsLoaded(fontStack, glyphRange); - observer->onNeedsRepaint(); + observer->onUpdate(Update::Repaint); } void Style::onGlyphsError(const FontStack& fontStack, const GlyphRange& glyphRange, std::exception_ptr error) { @@ -436,7 +436,7 @@ void Style::onGlyphsError(const FontStack& fontStack, const GlyphRange& glyphRan void Style::onSourceLoaded(Source& source) { observer->onSourceLoaded(source); - observer->onNeedsRepaint(); + observer->onUpdate(Update::Repaint); } void Style::onSourceError(Source& source, std::exception_ptr error) { @@ -453,7 +453,7 @@ void Style::onTileLoaded(Source& source, const OverscaledTileID& tileID, bool is } observer->onTileLoaded(source, tileID, isNewTile); - observer->onNeedsRepaint(); + observer->onUpdate(Update::Repaint); } void Style::onTileError(Source& source, const OverscaledTileID& tileID, std::exception_ptr error) { @@ -464,14 +464,14 @@ void Style::onTileError(Source& source, const OverscaledTileID& tileID, std::exc observer->onResourceError(error); } -void Style::onNeedsRepaint() { - observer->onNeedsRepaint(); +void Style::onTileUpdated(Source&, const OverscaledTileID&) { + observer->onUpdate(Update::Repaint); } void Style::onSpriteLoaded() { shouldReparsePartialTiles = true; observer->onSpriteLoaded(); - observer->onNeedsRepaint(); + observer->onUpdate(Update::Repaint); } void Style::onSpriteError(std::exception_ptr error) { diff --git a/src/mbgl/style/style.hpp b/src/mbgl/style/style.hpp index 671e25bdc1..ca6526478e 100644 --- a/src/mbgl/style/style.hpp +++ b/src/mbgl/style/style.hpp @@ -127,7 +127,7 @@ private: void onSourceError(Source&, std::exception_ptr) override; void onTileLoaded(Source&, const OverscaledTileID&, bool isNewTile) override; void onTileError(Source&, const OverscaledTileID&, std::exception_ptr) override; - void onNeedsRepaint() override; + void onTileUpdated(Source&, const OverscaledTileID&) override; Observer nullObserver; Observer* observer = &nullObserver; diff --git a/src/mbgl/tile/geometry_tile.cpp b/src/mbgl/tile/geometry_tile.cpp index d353acf574..ef5b2eb280 100644 --- a/src/mbgl/tile/geometry_tile.cpp +++ b/src/mbgl/tile/geometry_tile.cpp @@ -213,7 +213,7 @@ void GeometryTile::redoPlacement() { if (placedConfig != targetConfig) { redoPlacement(); } else { - observer->onNeedsRepaint(); + observer->onTileUpdated(*this); } }); } diff --git a/src/mbgl/tile/tile.cpp b/src/mbgl/tile/tile.cpp index 6595c314ee..632e271093 100644 --- a/src/mbgl/tile/tile.cpp +++ b/src/mbgl/tile/tile.cpp @@ -18,7 +18,7 @@ void Tile::setObserver(TileObserver* observer_) { void Tile::setTriedOptional() { triedOptional = true; - observer->onNeedsRepaint(); + observer->onTileUpdated(*this); } void Tile::dumpDebugLogs() const { diff --git a/src/mbgl/tile/tile_observer.hpp b/src/mbgl/tile/tile_observer.hpp index 96ded11fbb..ef412f0fb3 100644 --- a/src/mbgl/tile/tile_observer.hpp +++ b/src/mbgl/tile/tile_observer.hpp @@ -12,7 +12,7 @@ public: virtual void onTileLoaded(Tile&, bool /*isNewTile*/) {} virtual void onTileError(Tile&, std::exception_ptr) {} - virtual void onNeedsRepaint() {} + virtual void onTileUpdated(Tile&) {} }; } // namespace mbgl diff --git a/test/src/mbgl/test/stub_style_observer.hpp b/test/src/mbgl/test/stub_style_observer.hpp index ae0a23f0aa..879b06d6b8 100644 --- a/test/src/mbgl/test/stub_style_observer.hpp +++ b/test/src/mbgl/test/stub_style_observer.hpp @@ -43,8 +43,8 @@ public: if (tileError) tileError(source, tileID, error); } - void onNeedsRepaint() override { - if (needsRepaint) needsRepaint(); + void onTileUpdated(Source& source, const OverscaledTileID& tileID) override { + if (tileUpdated) tileUpdated(source, tileID); }; void onResourceError(std::exception_ptr error) override { @@ -59,6 +59,6 @@ public: std::function<void (Source&, std::exception_ptr)> sourceError; std::function<void (Source&, const OverscaledTileID&, bool isNewTile)> tileLoaded; std::function<void (Source&, const OverscaledTileID&, std::exception_ptr)> tileError; - std::function<void ()> needsRepaint; + std::function<void (Source&, const OverscaledTileID&)> tileUpdated; std::function<void (std::exception_ptr)> resourceError; }; |