summaryrefslogtreecommitdiff
path: root/platform/default/mbgl/gl/headless_backend.hpp
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2016-11-22 15:17:51 +0100
committerKonstantin Käfer <mail@kkaefer.com>2016-11-22 20:58:51 +0100
commit117863f1114551407c481abc752f5fcfd139c878 (patch)
tree4c408a8a3809df59fdfac1bc622ea79fbdbe611e /platform/default/mbgl/gl/headless_backend.hpp
parent3bc79e316e343d59f77811bca4ed6c594431e91c (diff)
downloadqtlocation-mapboxgl-117863f1114551407c481abc752f5fcfd139c878.tar.gz
[build] move headless rendering files to platform/default
Diffstat (limited to 'platform/default/mbgl/gl/headless_backend.hpp')
-rw-r--r--platform/default/mbgl/gl/headless_backend.hpp57
1 files changed, 57 insertions, 0 deletions
diff --git a/platform/default/mbgl/gl/headless_backend.hpp b/platform/default/mbgl/gl/headless_backend.hpp
new file mode 100644
index 0000000000..da8c55e044
--- /dev/null
+++ b/platform/default/mbgl/gl/headless_backend.hpp
@@ -0,0 +1,57 @@
+#pragma once
+
+#include <mbgl/gl/extension.hpp>
+
+#include <mbgl/map/backend.hpp>
+
+#include <memory>
+#include <functional>
+
+namespace mbgl {
+
+class HeadlessDisplay;
+
+class HeadlessBackend : public Backend {
+public:
+ HeadlessBackend();
+ HeadlessBackend(std::shared_ptr<HeadlessDisplay>);
+ ~HeadlessBackend() override;
+
+ void invalidate() override;
+ void activate() override;
+ void deactivate() override;
+ void notifyMapChange(MapChange) override;
+
+ void setMapChangeCallback(std::function<void(MapChange)>&& cb) { mapChangeCallback = std::move(cb); }
+
+ struct Impl {
+ virtual ~Impl() {}
+ virtual void activateContext() = 0;
+ virtual void deactivateContext() {}
+ };
+
+private:
+ // Implementation specific functions
+ static gl::glProc initializeExtension(const char*);
+
+ bool hasContext() const { return bool(impl); }
+ bool hasDisplay();
+
+ void createContext();
+
+private:
+ void destroyContext();
+
+ void activateContext();
+ void deactivateContext();
+
+ std::unique_ptr<Impl> impl;
+ std::shared_ptr<HeadlessDisplay> display;
+
+ bool extensionsLoaded = false;
+ bool active = false;
+
+ std::function<void(MapChange)> mapChangeCallback;
+};
+
+} // namespace mbgl