diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2016-11-22 15:17:51 +0100 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2016-11-22 20:58:51 +0100 |
commit | 117863f1114551407c481abc752f5fcfd139c878 (patch) | |
tree | 4c408a8a3809df59fdfac1bc622ea79fbdbe611e /platform/default/mbgl/gl/headless_backend.hpp | |
parent | 3bc79e316e343d59f77811bca4ed6c594431e91c (diff) | |
download | qtlocation-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.hpp | 57 |
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 |