diff --git a/gui/include/avopenglwidget.h b/gui/include/avopenglwidget.h index 312f16c..d9ddc0d 100644 --- a/gui/include/avopenglwidget.h +++ b/gui/include/avopenglwidget.h @@ -32,6 +32,7 @@ extern "C" class VideoDecoder; class AVOpenGLFrameUploader; +class QOffscreenSurface; struct PlaneConfig { @@ -76,6 +77,7 @@ class AVOpenGLWidget: public QOpenGLWidget AVOpenGLFrame frames[2]; int frame_fg; QMutex frames_mutex; + QOffscreenSurface *frame_uploader_surface; QOpenGLContext *frame_uploader_context; AVOpenGLFrameUploader *frame_uploader; QThread *frame_uploader_thread; diff --git a/gui/src/avopenglwidget.cpp b/gui/src/avopenglwidget.cpp index 11d4b09..21b51f3 100644 --- a/gui/src/avopenglwidget.cpp +++ b/gui/src/avopenglwidget.cpp @@ -19,6 +19,7 @@ #include #include +#include #include #include #include @@ -177,6 +178,7 @@ AVOpenGLWidget::~AVOpenGLWidget() } delete frame_uploader; delete frame_uploader_context; + delete frame_uploader_surface; } void AVOpenGLWidget::mouseMoveEvent(QMouseEvent *event) @@ -363,7 +365,10 @@ void AVOpenGLWidget::initializeGL() 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_uploader_thread = new QThread(this);