From caecdc8482fee16694b3b7d5ba5cd963c07fceb0 Mon Sep 17 00:00:00 2001 From: "Thiago Marcos P. Santos" Date: Tue, 12 Jun 2018 19:17:16 +0300 Subject: [PATCH] [core] Use a getter for the BackendScope static variable Fix a static variable initialization issue when dynamic loading Mapbox GL Native. --- src/mbgl/renderer/backend_scope.cpp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/mbgl/renderer/backend_scope.cpp b/src/mbgl/renderer/backend_scope.cpp index fafeaabb3..ad430961a 100644 --- a/src/mbgl/renderer/backend_scope.cpp +++ b/src/mbgl/renderer/backend_scope.cpp @@ -4,12 +4,20 @@ #include +namespace { + +mbgl::util::ThreadLocal& currentScope() { + static mbgl::util::ThreadLocal backendScope; + + return backendScope; +} + +} // namespace + namespace mbgl { -static util::ThreadLocal currentScope; - BackendScope::BackendScope(RendererBackend& backend_, ScopeType scopeType_) - : priorScope(currentScope.get()), + : priorScope(currentScope().get()), nextScope(nullptr), backend(backend_), scopeType(scopeType_) { @@ -21,7 +29,7 @@ BackendScope::BackendScope(RendererBackend& backend_, ScopeType scopeType_) activate(); - currentScope.set(this); + currentScope().set(this); } BackendScope::~BackendScope() { @@ -30,11 +38,11 @@ BackendScope::~BackendScope() { if (priorScope) { priorScope->activate(); - currentScope.set(priorScope); + currentScope().set(priorScope); assert(priorScope->nextScope == this); priorScope->nextScope = nullptr; } else { - currentScope.set(nullptr); + currentScope().set(nullptr); } } @@ -60,7 +68,7 @@ void BackendScope::deactivate() { } bool BackendScope::exists() { - return currentScope.get(); + return currentScope().get(); } } // namespace mbgl