Fix Surface for EGL (Fix #71)

This commit is contained in:
Florian Märkl 2020-05-08 15:03:58 +02:00
commit 090c37fb0a
No known key found for this signature in database
GPG key ID: 125BC8A5A6A1E857
2 changed files with 8 additions and 1 deletions

View file

@ -32,6 +32,7 @@ extern "C"
class VideoDecoder; class VideoDecoder;
class AVOpenGLFrameUploader; class AVOpenGLFrameUploader;
class QOffscreenSurface;
struct PlaneConfig struct PlaneConfig
{ {
@ -76,6 +77,7 @@ class AVOpenGLWidget: public QOpenGLWidget
AVOpenGLFrame frames[2]; AVOpenGLFrame frames[2];
int frame_fg; int frame_fg;
QMutex frames_mutex; QMutex frames_mutex;
QOffscreenSurface *frame_uploader_surface;
QOpenGLContext *frame_uploader_context; QOpenGLContext *frame_uploader_context;
AVOpenGLFrameUploader *frame_uploader; AVOpenGLFrameUploader *frame_uploader;
QThread *frame_uploader_thread; QThread *frame_uploader_thread;

View file

@ -19,6 +19,7 @@
#include <videodecoder.h> #include <videodecoder.h>
#include <avopenglframeuploader.h> #include <avopenglframeuploader.h>
#include <QOffscreenSurface>
#include <QOpenGLContext> #include <QOpenGLContext>
#include <QOpenGLExtraFunctions> #include <QOpenGLExtraFunctions>
#include <QOpenGLDebugLogger> #include <QOpenGLDebugLogger>
@ -177,6 +178,7 @@ AVOpenGLWidget::~AVOpenGLWidget()
} }
delete frame_uploader; delete frame_uploader;
delete frame_uploader_context; delete frame_uploader_context;
delete frame_uploader_surface;
} }
void AVOpenGLWidget::mouseMoveEvent(QMouseEvent *event) void AVOpenGLWidget::mouseMoveEvent(QMouseEvent *event)
@ -363,7 +365,10 @@ void AVOpenGLWidget::initializeGL()
return; return;
} }
frame_uploader = new AVOpenGLFrameUploader(decoder, this, frame_uploader_context, context()->surface()); frame_uploader_surface = new QOffscreenSurface();
frame_uploader_surface->setFormat(context()->format());
frame_uploader_surface->create();
frame_uploader = new AVOpenGLFrameUploader(decoder, this, frame_uploader_context, frame_uploader_surface);
frame_fg = 0; frame_fg = 0;
frame_uploader_thread = new QThread(this); frame_uploader_thread = new QThread(this);