summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichael Goddard <michael.goddard@nokia.com>2012-01-27 12:38:35 +1000
committerQt by Nokia <qt-info@nokia.com>2012-01-27 07:35:09 +0100
commit88431b2841b5c6a13c360aae402847409953c867 (patch)
tree6658b917d4e957c9edeabb50d5a821fab375b53a /src
parentbad94a532996339da23906764521447803f24b16 (diff)
Fix some surface assignment errors.
On destruction and changing sources, make sure we don't clobber the surface property if it's been changed. Change-Id: I3080b98a547911543a391c8bc040792d260782fd Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
Diffstat (limited to 'src')
-rw-r--r--src/imports/multimedia/qdeclarativevideooutput.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/imports/multimedia/qdeclarativevideooutput.cpp b/src/imports/multimedia/qdeclarativevideooutput.cpp
index feb7bbbf3..8e84db0a7 100644
--- a/src/imports/multimedia/qdeclarativevideooutput.cpp
+++ b/src/imports/multimedia/qdeclarativevideooutput.cpp
@@ -178,6 +178,11 @@ QDeclarativeVideoOutput::QDeclarativeVideoOutput(QQuickItem *parent) :
QDeclarativeVideoOutput::~QDeclarativeVideoOutput()
{
+ if (m_source && m_sourceType == VideoSurfaceSource) {
+ if (m_source.data()->property("videoSurface").value<QAbstractVideoSurface*>() == m_surface)
+ m_source.data()->setProperty("videoSurface", QVariant::fromValue<QAbstractVideoSurface*>(0));
+ }
+
m_source.clear();
_q_updateMediaObject();
delete m_surface;
@@ -209,8 +214,10 @@ void QDeclarativeVideoOutput::setSource(QObject *source)
if (m_source && m_sourceType == MediaObjectSource)
disconnect(0, m_source.data(), SLOT(_q_updateMediaObject()));
- if (m_source && m_sourceType == VideoSurfaceSource)
- m_source.data()->setProperty("videoSurface", QVariant::fromValue<QAbstractVideoSurface*>(0));
+ if (m_source && m_sourceType == VideoSurfaceSource) {
+ if (m_source.data()->property("videoSurface").value<QAbstractVideoSurface*>() == m_surface)
+ m_source.data()->setProperty("videoSurface", QVariant::fromValue<QAbstractVideoSurface*>(0));
+ }
m_surface->stop();