summaryrefslogtreecommitdiff
path: root/include/mbgl/map/backend.hpp
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2016-10-06 13:23:50 +0200
committerIvo van Dongen <ivovandongen@users.noreply.github.com>2016-11-11 18:00:15 +0100
commit28b201acb57a8f9091821fb0a84400865e8d012d (patch)
treeab7bb107c75203d8635bd8d729fb539b3169a3ed /include/mbgl/map/backend.hpp
parentb481bcbe6aba6ce25512b519023a355d4ffd28a4 (diff)
downloadqtlocation-mapboxgl-28b201acb57a8f9091821fb0a84400865e8d012d.tar.gz
[core] separate Backend from View for headless rendering
Diffstat (limited to 'include/mbgl/map/backend.hpp')
-rw-r--r--include/mbgl/map/backend.hpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/include/mbgl/map/backend.hpp b/include/mbgl/map/backend.hpp
new file mode 100644
index 0000000000..e4a5634b88
--- /dev/null
+++ b/include/mbgl/map/backend.hpp
@@ -0,0 +1,34 @@
+#pragma once
+
+#include <mbgl/map/change.hpp>
+
+namespace mbgl {
+
+class Map;
+
+class Backend {
+public:
+ virtual ~Backend() = default;
+
+ // Called when the backend's GL context needs to be made active or inactive. These are called,
+ // as a matched pair, in four situations:
+ //
+ // 1. When releasing GL resources during Map destruction
+ // 2. When calling a CustomLayerInitializeFunction, during Map::addLayer
+ // 3. When calling a CustomLayerDeinitializeFunction, during Map::removeLayer
+ // 4. When rendering for Map::renderStill
+ //
+ // They are *not* called for Map::render; it is assumed that the correct context is already
+ // activated prior to calling Map::render.
+ virtual void activate() = 0;
+ virtual void deactivate() = 0;
+
+ // Called when the map needs to be rendered; the backend should call Map::render() at some point
+ // in the near future. (Not called for Map::renderStill() mode.)
+ virtual void invalidate() = 0;
+
+ // Notifies a watcher of map x/y/scale/rotation changes.
+ virtual void notifyMapChange(MapChange change);
+};
+
+} // namespace mbgl