winrt: Add missing QAbstractVideoSurface::stop() call.
This was preventing the surface from restarting with a different format. Change-Id: I1f86ddb1b16618f167183c7e2fcb32658df578f3 Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
This commit is contained in:
committed by
Andrew Knight
parent
1027215920
commit
ce7b59c28d
@@ -44,6 +44,7 @@
|
|||||||
#include <QtCore/qfunctions_winrt.h>
|
#include <QtCore/qfunctions_winrt.h>
|
||||||
#include <QtCore/QGlobalStatic>
|
#include <QtCore/QGlobalStatic>
|
||||||
#include <QtCore/QMetaMethod>
|
#include <QtCore/QMetaMethod>
|
||||||
|
#include <QtCore/QPointer>
|
||||||
#include <QtGui/QOpenGLContext>
|
#include <QtGui/QOpenGLContext>
|
||||||
#include <QtGui/QOpenGLTexture>
|
#include <QtGui/QOpenGLTexture>
|
||||||
#include <QtMultimedia/QAbstractVideoBuffer>
|
#include <QtMultimedia/QAbstractVideoBuffer>
|
||||||
@@ -181,7 +182,7 @@ enum DirtyState {
|
|||||||
class QWinRTAbstractVideoRendererControlPrivate
|
class QWinRTAbstractVideoRendererControlPrivate
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
QAbstractVideoSurface *surface;
|
QPointer<QAbstractVideoSurface> surface;
|
||||||
QVideoSurfaceFormat format;
|
QVideoSurfaceFormat format;
|
||||||
|
|
||||||
DirtyState dirtyState;
|
DirtyState dirtyState;
|
||||||
@@ -219,7 +220,6 @@ QWinRTAbstractVideoRendererControl::QWinRTAbstractVideoRendererControl(const QSi
|
|||||||
{
|
{
|
||||||
Q_D(QWinRTAbstractVideoRendererControl);
|
Q_D(QWinRTAbstractVideoRendererControl);
|
||||||
|
|
||||||
d->surface = Q_NULLPTR;
|
|
||||||
d->format = QVideoSurfaceFormat(size, QVideoFrame::Format_BGRA32,
|
d->format = QVideoSurfaceFormat(size, QVideoFrame::Format_BGRA32,
|
||||||
QAbstractVideoBuffer::GLTextureHandle);
|
QAbstractVideoBuffer::GLTextureHandle);
|
||||||
d->dirtyState = TextureDirty;
|
d->dirtyState = TextureDirty;
|
||||||
@@ -340,6 +340,8 @@ void QWinRTAbstractVideoRendererControl::setActive(bool active)
|
|||||||
}
|
}
|
||||||
|
|
||||||
d->renderThread.requestInterruption();
|
d->renderThread.requestInterruption();
|
||||||
|
if (d->surface && d->surface->isActive())
|
||||||
|
d->surface->stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
void QWinRTAbstractVideoRendererControl::present()
|
void QWinRTAbstractVideoRendererControl::present()
|
||||||
|
|||||||
Reference in New Issue
Block a user