summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mbgl/map/map.cpp17
-rw-r--r--src/mbgl/style/observer.hpp9
-rw-r--r--src/mbgl/style/source_impl.cpp4
-rw-r--r--src/mbgl/style/source_impl.hpp2
-rw-r--r--src/mbgl/style/source_observer.hpp3
-rw-r--r--src/mbgl/style/style.cpp12
-rw-r--r--src/mbgl/style/style.hpp2
-rw-r--r--src/mbgl/tile/geometry_tile.cpp2
-rw-r--r--src/mbgl/tile/tile.cpp2
-rw-r--r--src/mbgl/tile/tile_observer.hpp2
-rw-r--r--test/src/mbgl/test/stub_style_observer.hpp6
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;
};