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:
Andrew Knight
2014-12-11 10:52:18 +02:00
committed by Andrew Knight
parent 1027215920
commit ce7b59c28d

View File

@@ -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()