]> git.sesse.net Git - nageru/commitdiff
Set pixel format on contexts we create; fixes issues with Qt 5.5.1.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Thu, 5 Nov 2015 22:18:43 +0000 (23:18 +0100)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Thu, 5 Nov 2015 22:18:43 +0000 (23:18 +0100)
context.cpp
context.h
h264encode.cpp
mixer.cpp

index 4ae85bdd95a7dc09f9abd4676d35fa078e894402..6ce57446b08983c670a3c7b7c99aaf452cc0fe61 100644 (file)
@@ -22,10 +22,11 @@ QSurface *create_surface(const QSurfaceFormat &format)
        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;
 }
index c670473015054c4156fadc39f6337b6318b17012..0c92a602716f263f4ad6237da871a84bb767f976 100644 (file)
--- a/context.h
+++ b/context.h
@@ -9,5 +9,5 @@ class QGLWidget;
 
 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);
index 51ad5178704922c56dd474db247405077e45aae3..ad688fc58ee87b59e5232b94ad75bc4c24b36ad1 100644 (file)
@@ -1868,7 +1868,7 @@ H264Encoder::H264Encoder(QSurface *surface, int width, int height, HTTPD *httpd)
 
        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(),
index 9efb8ef1d611995b17e248e5c54a6cb8a169e7e4..d1a788bab2e483eebc45edbfdb8e9b4373f6f5f1 100644 (file)
--- a/mixer.cpp
+++ b/mixer.cpp
@@ -111,7 +111,7 @@ Mixer::Mixer(const QSurfaceFormat &format, unsigned num_cards)
                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);
@@ -329,7 +329,7 @@ void Mixer::bm_frame(unsigned card_index, uint16_t timecode,
 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);