Files
MapLibreParticleLab/platform/default/mbgl/gl/headless_backend.cpp
John Firebaugh ed7844d08f [core] Inline HeadlessBackend::{activate,deactivate,destroy}Context
HeadlessContext::destroyContext isn't even necessary; std::unique_ptr handles that automatically.
2017-02-20 12:04:21 -08:00

59 lines
1.1 KiB
C++

#include <mbgl/gl/headless_backend.hpp>
#include <mbgl/gl/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();
}
void HeadlessBackend::activate() {
active = true;
if (!hasContext()) {
if (!hasDisplay()) {
throw std::runtime_error("Display is not set");
}
createContext();
}
assert(hasContext());
impl->activateContext();
if (!extensionsLoaded) {
gl::InitializeExtensions(initializeExtension);
extensionsLoaded = true;
}
}
void HeadlessBackend::deactivate() {
assert(hasContext());
impl->deactivateContext();
active = false;
}
void HeadlessBackend::invalidate() {
assert(false);
}
void HeadlessBackend::notifyMapChange(MapChange change) {
if (mapChangeCallback) {
mapChangeCallback(change);
}
}
} // namespace mbgl