summaryrefslogtreecommitdiff
path: root/src/mbgl/annotation/annotation_manager.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_manager.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_manager.cpp')
-rw-r--r--src/mbgl/annotation/annotation_manager.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/mbgl/annotation/annotation_manager.cpp b/src/mbgl/annotation/annotation_manager.cpp
index e5c55c90dd..7169d51622 100644
--- a/src/mbgl/annotation/annotation_manager.cpp
+++ b/src/mbgl/annotation/annotation_manager.cpp
@@ -138,7 +138,19 @@ void AnnotationManager::updateStyle(Style& style) {
}
obsoleteShapeAnnotationLayers.clear();
- style.getSource(SourceID)->invalidateTiles();
+
+ for (auto& monitor : monitors) {
+ monitor->update(getTile(monitor->tileID));
+ }
+}
+
+void AnnotationManager::addTileMonitor(AnnotationTileMonitor& monitor) {
+ monitors.insert(&monitor);
+ monitor.update(getTile(monitor.tileID));
+}
+
+void AnnotationManager::removeTileMonitor(AnnotationTileMonitor& monitor) {
+ monitors.erase(&monitor);
}
}