winrt: Add missing QAbstractVideoSurface::stop() call.
authorAndrew Knight <andrew.knight@digia.com>
Thu, 11 Dec 2014 08:52:18 +0000 (10:52 +0200)
committerAndrew Knight <andrew.knight@theqtcompany.com>
Thu, 11 Dec 2014 15:49:07 +0000 (16:49 +0100)
This was preventing the surface from restarting with a different format.

Change-Id: I1f86ddb1b16618f167183c7e2fcb32658df578f3
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
src/plugins/winrt/qwinrtabstractvideorenderercontrol.cpp

index be04362..031a176 100644 (file)
@@ -44,6 +44,7 @@
 #include <QtCore/qfunctions_winrt.h>
 #include <QtCore/QGlobalStatic>
 #include <QtCore/QMetaMethod>
+#include <QtCore/QPointer>
 #include <QtGui/QOpenGLContext>
 #include <QtGui/QOpenGLTexture>
 #include <QtMultimedia/QAbstractVideoBuffer>
@@ -181,7 +182,7 @@ enum DirtyState {
 class QWinRTAbstractVideoRendererControlPrivate
 {
 public:
-    QAbstractVideoSurface *surface;
+    QPointer<QAbstractVideoSurface> surface;
     QVideoSurfaceFormat format;
 
     DirtyState dirtyState;
@@ -219,7 +220,6 @@ QWinRTAbstractVideoRendererControl::QWinRTAbstractVideoRendererControl(const QSi
 {
     Q_D(QWinRTAbstractVideoRendererControl);
 
-    d->surface = Q_NULLPTR;
     d->format = QVideoSurfaceFormat(size, QVideoFrame::Format_BGRA32,
                                     QAbstractVideoBuffer::GLTextureHandle);
     d->dirtyState = TextureDirty;
@@ -340,6 +340,8 @@ void QWinRTAbstractVideoRendererControl::setActive(bool active)
     }
 
     d->renderThread.requestInterruption();
+    if (d->surface && d->surface->isActive())
+        d->surface->stop();
 }
 
 void QWinRTAbstractVideoRendererControl::present()