From 8e5214144ec4f3a4fb40b7a7e4d8f09fd10dbb78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Konstantin=20K=C3=A4fer?= Date: Mon, 27 Feb 2017 18:33:16 +0100 Subject: [core] Ensure that a BackendScope exists when doing GL calls --- include/mbgl/map/backend_scope.hpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'include/mbgl/map') diff --git a/include/mbgl/map/backend_scope.hpp b/include/mbgl/map/backend_scope.hpp index 5a207e6ac4..4985cd197f 100644 --- a/include/mbgl/map/backend_scope.hpp +++ b/include/mbgl/map/backend_scope.hpp @@ -6,13 +6,26 @@ class Backend; class BackendScope { public: - BackendScope(Backend&); + // There are two types of scopes: Creating an "Implicit" scope tells Mapbox GL that the + // supporting windowing system has already activated the GL Backend and that no further actions + // are required. Creating an "Explicit" scope actually enables the GL Backend, and disables it + // when the BackendScope is destroyed. + enum class ScopeType : bool { + Implicit, + Explicit, + }; + + BackendScope(Backend&, ScopeType = ScopeType::Explicit); ~BackendScope(); + // Returns true when there is currently a BackendScope active in this thread. + static bool exists(); + private: BackendScope* priorScope; BackendScope* nextScope; Backend& backend; + const ScopeType scopeType; }; } // namespace mbgl -- cgit v1.2.1