#include #include #include #include #if QT_VERSION >= 0x050000 #include #endif #include namespace mbgl { struct QtImpl : public HeadlessBackend::Impl { void activateContext() final { widget.makeCurrent(); } void deactivateContext() final { widget.doneCurrent(); } QGLWidget widget; }; gl::glProc HeadlessBackend::initializeExtension(const char* name) { #if QT_VERSION >= 0x050000 QOpenGLContext* thisContext = QOpenGLContext::currentContext(); return thisContext->getProcAddress(name); #else const QGLContext* thisContext = QGLContext::currentContext(); return reinterpret_cast(thisContext->getProcAddress(name)); #endif } bool HeadlessBackend::hasDisplay() { return true; }; void HeadlessBackend::createContext() { assert(!hasContext()); static const char* argv[] = { "mbgl" }; static int argc = 1; static auto* app = new QApplication(argc, const_cast(argv)); Q_UNUSED(app); impl.reset(new QtImpl); } } // namespace mbgl