diff -r 06b8e2af4411 -r 6fbed849b4f4 qtmobility/plugins/multimedia/gstreamer/qgstreamervideorenderer.cpp --- a/qtmobility/plugins/multimedia/gstreamer/qgstreamervideorenderer.cpp Fri Jun 11 14:26:25 2010 +0300 +++ b/qtmobility/plugins/multimedia/gstreamer/qgstreamervideorenderer.cpp Wed Jun 23 19:08:38 2010 +0300 @@ -48,7 +48,7 @@ #include QGstreamerVideoRenderer::QGstreamerVideoRenderer(QObject *parent) - :QVideoRendererControl(parent),m_videoSink(0) + :QVideoRendererControl(parent),m_videoSink(0), m_surface(0) { } @@ -77,6 +77,15 @@ void QGstreamerVideoRenderer::setSurface(QAbstractVideoSurface *surface) { - m_surface = surface; + if (m_surface != surface) { + if (m_videoSink) + gst_object_unref(GST_OBJECT(m_videoSink)); + + m_videoSink = 0; + + m_surface = surface; + + emit sinkChanged(); + } }