return surface;
}
-QOpenGLContext *create_context()
+QOpenGLContext *create_context(const QSurface *surface)
{
QOpenGLContext *context = new QOpenGLContext;
context->setShareContext(global_share_widget->context()->contextHandle());
+ context->setFormat(surface->format());
context->create();
return context;
}
extern QGLWidget *global_share_widget;
QSurface *create_surface(const QSurfaceFormat &format);
-QOpenGLContext *create_context();
+QOpenGLContext *create_context(const QSurface *surface);
bool make_current(QOpenGLContext *context, QSurface *surface);
copy_thread = std::thread([this]{
//SDL_GL_MakeCurrent(window, context);
- QOpenGLContext *context = create_context();
+ QOpenGLContext *context = create_context(this->surface);
eglBindAPI(EGL_OPENGL_API);
if (!make_current(context, this->surface)) {
printf("display=%p surface=%p context=%p curr=%p err=%d\n", eglGetCurrentDisplay(), this->surface, context, eglGetCurrentContext(),
card->usb->set_dequeue_thread_callbacks(
[card]{
eglBindAPI(EGL_OPENGL_API);
- card->context = create_context();
+ card->context = create_context(card->surface);
if (!make_current(card->context, card->surface)) {
printf("failed to create bmusb context\n");
exit(1);
void Mixer::thread_func()
{
eglBindAPI(EGL_OPENGL_API);
- QOpenGLContext *context = create_context();
+ QOpenGLContext *context = create_context(mixer_surface);
if (!make_current(context, mixer_surface)) {
printf("oops\n");
exit(1);