diff options
author | Ivo van Dongen <info@ivovandongen.nl> | 2017-07-05 20:08:51 +0300 |
---|---|---|
committer | Ivo van Dongen <ivovandongen@users.noreply.github.com> | 2017-07-18 10:45:12 +0200 |
commit | 46c43510d7ac5fe078010d5f0f5d39c4d5df3305 (patch) | |
tree | 5dc78959e174dc0e83198a4d92e86f65f33bb168 /src/mbgl/renderer/backend_scope.cpp | |
parent | ee205ca9ca3f808fa2cc16295ebde0a7c3867381 (diff) | |
download | qtlocation-mapboxgl-46c43510d7ac5fe078010d5f0f5d39c4d5df3305.tar.gz |
[core] rename backend to renderer backend
Diffstat (limited to 'src/mbgl/renderer/backend_scope.cpp')
-rw-r--r-- | src/mbgl/renderer/backend_scope.cpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/mbgl/renderer/backend_scope.cpp b/src/mbgl/renderer/backend_scope.cpp new file mode 100644 index 0000000000..5d57421c48 --- /dev/null +++ b/src/mbgl/renderer/backend_scope.cpp @@ -0,0 +1,47 @@ +#include <mbgl/renderer/backend_scope.hpp> +#include <mbgl/renderer/renderer_backend.hpp> +#include <mbgl/util/thread_local.hpp> + +#include <cassert> + +namespace mbgl { + +static util::ThreadLocal<BackendScope> currentScope; + +BackendScope::BackendScope(RendererBackend& backend_, ScopeType scopeType_) + : priorScope(currentScope.get()), + nextScope(nullptr), + backend(backend_), + scopeType(scopeType_) { + if (priorScope) { + assert(priorScope->nextScope == nullptr); + priorScope->nextScope = this; + } + if (scopeType == ScopeType::Explicit) { + backend.activate(); + } + + currentScope.set(this); +} + +BackendScope::~BackendScope() { + assert(nextScope == nullptr); + if (priorScope) { + priorScope->backend.activate(); + currentScope.set(priorScope); + assert(priorScope->nextScope == this); + priorScope->nextScope = nullptr; + } else { + if (scopeType == ScopeType::Explicit) { + backend.deactivate(); + } + + currentScope.set(nullptr); + } +} + +bool BackendScope::exists() { + return currentScope.get(); +} + +} // namespace mbgl |