#include #include #include #include namespace mbgl { static util::ThreadLocal currentScope; BackendScope::BackendScope(Backend& backend_) : priorScope(currentScope.get()), nextScope(nullptr), backend(backend_) { if (priorScope) { assert(priorScope->nextScope == nullptr); priorScope->nextScope = this; } 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 { backend.deactivate(); currentScope.set(nullptr); } } } // namespace mbgl