Files
MapLibreParticleLab/platform/default/headless_backend.cpp
Bruno de Oliveira Abinader d0ac12309b [core] Refactor HeadlessBackend
2016-11-08 18:02:38 +02:00

73 lines
1.4 KiB
C++

#include <mbgl/platform/default/headless_backend.hpp>
#include <mbgl/platform/default/headless_display.hpp>
#include <cassert>
#include <stdexcept>
#include <type_traits>
namespace mbgl {
HeadlessBackend::HeadlessBackend() {
activate();
}
HeadlessBackend::HeadlessBackend(std::shared_ptr<HeadlessDisplay> display_)
: display(std::move(display_)) {
activate();
}
HeadlessBackend::~HeadlessBackend() {
deactivate();
destroyContext();
}
void HeadlessBackend::activate() {
active = true;
if (!hasContext()) {
if (!hasDisplay()) {
throw std::runtime_error("Display is not set");
}
createContext();
}
activateContext();
if (!extensionsLoaded) {
gl::InitializeExtensions(initializeExtension);
extensionsLoaded = true;
}
}
void HeadlessBackend::deactivate() {
deactivateContext();
active = false;
}
void HeadlessBackend::invalidate() {
assert(false);
}
void HeadlessBackend::destroyContext() {
assert(hasContext());
impl.reset();
}
void HeadlessBackend::activateContext() {
assert(hasContext());
impl->activateContext();
}
void HeadlessBackend::deactivateContext() {
assert(hasContext());
impl->deactivateContext();
}
void HeadlessBackend::notifyMapChange(MapChange change) {
if (mapChangeCallback) {
mapChangeCallback(change);
}
}
} // namespace mbgl