19 auto context = std::make_unique<QOpenGLContext>();
20 context->setShareContext(shareContext);
22 if (!context->create()) {
23 qWarning() <<
"Couldn't create an OpenGL context for QOpenGLVideoBuffer";
27 QObject::connect(QThread::currentThread(), &QThread::finished,
28 context.get(), &QOpenGLContext::deleteLater);
29 return context.release();
34 auto compositorContext = QOpenGLCompositor::instance()->context();
38 static thread_local QOpenGLContext *context =
nullptr;
39 static thread_local QOffscreenSurface *surface =
nullptr;
42 context = compositorContext->thread()->isCurrentThread() ? compositorContext
43 : createContext(compositorContext);
48 surface =
new QOffscreenSurface(
nullptr, context);
49 surface->setFormat(context->format());
53 return context->makeCurrent(surface);