summaryrefslogtreecommitdiff
path: root/src/mbgl/annotation/annotation_tile.cpp
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2015-10-29 12:00:59 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2015-10-30 11:17:01 -0700
commit7669e02062ccab9e3d908a9eab04f5d13a7b89c0 (patch)
treeeab604fd472aaa923eb503239a3eadcadaaae40f /src/mbgl/annotation/annotation_tile.cpp
parentf745f271e3ad4a969d98083b658a905f43e3dcd3 (diff)
downloadqtlocation-mapboxgl-7669e02062ccab9e3d908a9eab04f5d13a7b89c0.tar.gz
[core] Monitor annotation tiles, rather than completely invalidating them
Fixes #1688
Diffstat (limited to 'src/mbgl/annotation/annotation_tile.cpp')
-rw-r--r--src/mbgl/annotation/annotation_tile.cpp18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/mbgl/annotation/annotation_tile.cpp b/src/mbgl/annotation/annotation_tile.cpp
index 81f7662b48..4b0f2a92ec 100644
--- a/src/mbgl/annotation/annotation_tile.cpp
+++ b/src/mbgl/annotation/annotation_tile.cpp
@@ -26,13 +26,23 @@ util::ptr<GeometryTileLayer> AnnotationTile::getLayer(const std::string& name) c
return nullptr;
}
-AnnotationTileMonitor::AnnotationTileMonitor(const TileID& id, MapData& data)
- : tile(data.getAnnotationManager()->getTile(id)) {
+AnnotationTileMonitor::AnnotationTileMonitor(const TileID& tileID_, MapData& data_)
+ : tileID(tileID_),
+ data(data_) {
}
-Request* AnnotationTileMonitor::monitorTile(std::function<void (std::exception_ptr, std::unique_ptr<GeometryTile>)> callback) {
- callback(nullptr, std::move(tile));
+AnnotationTileMonitor::~AnnotationTileMonitor() {
+ data.getAnnotationManager()->removeTileMonitor(*this);
+}
+
+Request* AnnotationTileMonitor::monitorTile(std::function<void (std::exception_ptr, std::unique_ptr<GeometryTile>)> callback_) {
+ callback = callback_;
+ data.getAnnotationManager()->addTileMonitor(*this);
return nullptr;
}
+void AnnotationTileMonitor::update(std::unique_ptr<GeometryTile> tile) {
+ callback(nullptr, std::move(tile));
+}
+
}