diff options
author | Michael Goddard <michael.goddard@nokia.com> | 2012-01-27 12:38:35 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-01-27 07:35:09 +0100 |
commit | 88431b2841b5c6a13c360aae402847409953c867 (patch) | |
tree | 6658b917d4e957c9edeabb50d5a821fab375b53a /src | |
parent | bad94a532996339da23906764521447803f24b16 (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.cpp | 11 |
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(); |