AVFoundation: Call stop() on VideoSurface when changing sources
authorAndy Nichols <andy.nichols@digia.com>
Mon, 3 Mar 2014 17:39:43 +0000 (18:39 +0100)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Tue, 4 Mar 2014 14:34:09 +0000 (15:34 +0100)
Before we were reusing the active surface when we switched videos.  This
leads to an inconsitency in states, and the sourceRect property of the
video surface does not get updated.

Task-number: QTBUG-28655
Change-Id: Ie29bf1d9b1c11b6f51a869253c730202001c07cf
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
src/plugins/avfoundation/mediaplayer/avfvideorenderercontrol.mm

index 7fa7172..c7087b6 100644 (file)
@@ -182,6 +182,11 @@ void AVFVideoRendererControl::setLayer(void *playerLayer)
 
     m_playerLayer = playerLayer;
 
+    //If there is an active surface, make sure it has been stopped so that
+    //we can update it's state with the new content.
+    if (m_surface && m_surface->isActive())
+        m_surface->stop();
+
     //If there is no layer to render, stop scheduling updates
     if (m_playerLayer == 0) {
         m_displayLink->stop();