summaryrefslogtreecommitdiff
path: root/src/mbgl/map/backend_scope.cpp
blob: 302dfd70cfe5131a65236426621f6b0ae21ad64f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <mbgl/map/backend_scope.hpp>
#include <mbgl/map/backend.hpp>
#include <mbgl/util/thread_local.hpp>

namespace mbgl {

static util::ThreadLocal<Backend> currentBackend;

BackendScope::BackendScope(Backend& backend_)
    : priorBackend(currentBackend.get()),
      backend(backend_) {
    backend.activate();
    currentBackend.set(&backend);
}

BackendScope::~BackendScope() {
    if (priorBackend) {
        priorBackend->activate();
        currentBackend.set(priorBackend);
    } else {
        backend.deactivate();
        currentBackend.set(nullptr);
    }
}

} // namespace mbgl