diff options
author | Yoann Lopes <yoann.lopes@qt.io> | 2017-01-26 15:40:30 +0100 |
---|---|---|
committer | Yoann Lopes <yoann.lopes@qt.io> | 2017-01-26 15:53:44 +0100 |
commit | c5ff5b853b9bca231c54ee07e5238714c0407595 (patch) | |
tree | 0a4d842e7fcb6079d7c7b4935843eb1ba46a4422 /src/plugins | |
parent | 7e48870c182e66a8408bbcb4c9469d751a777daa (diff) | |
parent | c1164f874a21959d03893f62db8f8e2def44122d (diff) |
Merge remote-tracking branch 'origin/5.8' into dev
Conflicts:
.qmake.conf
examples/multimediawidgets/videographicsitem/videoplayer.h
src/plugins/gstreamer/mediaplayer/qgstreamerplayersession.cpp
Change-Id: Id5ce05ffe2cd25657232157b162680b2e24a35ba
Diffstat (limited to 'src/plugins')
4 files changed, 14 insertions, 4 deletions
diff --git a/src/plugins/common/evr/evrd3dpresentengine.cpp b/src/plugins/common/evr/evrd3dpresentengine.cpp index 9718c78b5..ae3d69fc2 100644 --- a/src/plugins/common/evr/evrd3dpresentengine.cpp +++ b/src/plugins/common/evr/evrd3dpresentengine.cpp @@ -255,7 +255,7 @@ QVariant IMFSampleVideoBuffer::handle() const if (handleType() != GLTextureHandle) return handle; - if (m_textureUpdated || m_engine->updateTexture(m_surface)) { + if (m_engine->m_glResources && (m_textureUpdated || m_engine->updateTexture(m_surface))) { m_textureUpdated = true; handle = QVariant::fromValue<unsigned int>(m_engine->m_glResources->glTexture); } diff --git a/src/plugins/gstreamer/mediaplayer/qgstreamermetadataprovider.cpp b/src/plugins/gstreamer/mediaplayer/qgstreamermetadataprovider.cpp index 01103d659..b9e29245f 100644 --- a/src/plugins/gstreamer/mediaplayer/qgstreamermetadataprovider.cpp +++ b/src/plugins/gstreamer/mediaplayer/qgstreamermetadataprovider.cpp @@ -93,7 +93,8 @@ static const QGstreamerMetaDataKeyLookup *qt_gstreamerMetaDataKeys() //metadataKeys->insert(0, QMediaMetaData::CoverArtUrlSmall); //metadataKeys->insert(0, QMediaMetaData::CoverArtUrlLarge); - metadataKeys->insert(GST_TAG_PREVIEW_IMAGE, QMediaMetaData::CoverArtImage); + metadataKeys->insert(GST_TAG_PREVIEW_IMAGE, QMediaMetaData::ThumbnailImage); + metadataKeys->insert(GST_TAG_IMAGE, QMediaMetaData::CoverArtImage); // Image/Video metadataKeys->insert("resolution", QMediaMetaData::Resolution); diff --git a/src/plugins/winrt/qwinrtabstractvideorenderercontrol.cpp b/src/plugins/winrt/qwinrtabstractvideorenderercontrol.cpp index 561d9e03c..b3fd11111 100644 --- a/src/plugins/winrt/qwinrtabstractvideorenderercontrol.cpp +++ b/src/plugins/winrt/qwinrtabstractvideorenderercontrol.cpp @@ -356,6 +356,13 @@ void QWinRTAbstractVideoRendererControl::setActive(bool active) if (!d->surface) return; + // This only happens for quick restart scenarios, for instance + // when switching cameras. + if (d->renderThread.isRunning() && d->renderThread.isInterruptionRequested()) { + CriticalSectionLocker lock(&d->mutex); + d->renderThread.wait(); + } + if (!d->surface->isActive()) d->surface->start(d->format); @@ -363,7 +370,8 @@ void QWinRTAbstractVideoRendererControl::setActive(bool active) return; } - shutdown(); + d->renderThread.requestInterruption(); + if (d->surface && d->surface->isActive()) d->surface->stop(); } diff --git a/src/plugins/winrt/qwinrtmediaplayercontrol.cpp b/src/plugins/winrt/qwinrtmediaplayercontrol.cpp index 5720488f2..a4df6306f 100644 --- a/src/plugins/winrt/qwinrtmediaplayercontrol.cpp +++ b/src/plugins/winrt/qwinrtmediaplayercontrol.cpp @@ -267,7 +267,8 @@ public: } if (d->videoRenderer) - d->videoRenderer->setActive(d->state == QMediaPlayer::PlayingState); + d->videoRenderer->setActive(d->state == QMediaPlayer::PlayingState && + d->videoRenderer->size().isValid()); const QMediaPlayer::MediaStatus oldMediaStatus = d->mediaStatus; const QMediaPlayer::State oldState = d->state; |