diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2015-10-29 12:00:59 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2015-10-30 11:17:01 -0700 |
commit | 7669e02062ccab9e3d908a9eab04f5d13a7b89c0 (patch) | |
tree | eab604fd472aaa923eb503239a3eadcadaaae40f /src/mbgl/annotation/annotation_tile.cpp | |
parent | f745f271e3ad4a969d98083b658a905f43e3dcd3 (diff) | |
download | qtlocation-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.cpp | 18 |
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)); +} + } |