diff options
author | Val Doroshchuk <valentyn.doroshchuk@qt.io> | 2019-04-12 08:58:11 +0200 |
---|---|---|
committer | VaL Doroshchuk <valentyn.doroshchuk@qt.io> | 2019-07-17 11:40:04 +0200 |
commit | 073d3ea91c4c3f3fe7227e7335d35fc53dc630b3 (patch) | |
tree | abdaca130d968d13203bce58d236162044051353 | |
parent | 411bd814849dace75ec755c46f668604eb6f4821 (diff) |
DirectShow: Set QMediaPlayer::NoMedia if empty url is provided
In case of clearing current playlist by passing nullptr to QMediaPlayer::setPlaylist, empty url is passed to a backend:
QMediaContent m(playlist, QUrl(), false);
setMedia(m);
The status should be updated by QMediaPlayer::NoMedia if empty url is
passed.
Fixes tst_QMediaPlayerBackend::playlistObject()
Task-number: QTBUG-65574
Change-Id: Iea03e3fcb8d74c9b1b482aa06b42686cf8c9e9a7
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
-rw-r--r-- | src/plugins/directshow/player/directshowplayerservice.cpp | 10 | ||||
-rw-r--r-- | src/plugins/directshow/player/directshowplayerservice.h | 1 |
2 files changed, 3 insertions, 8 deletions
diff --git a/src/plugins/directshow/player/directshowplayerservice.cpp b/src/plugins/directshow/player/directshowplayerservice.cpp index 3c81881fa..0d44da722 100644 --- a/src/plugins/directshow/player/directshowplayerservice.cpp +++ b/src/plugins/directshow/player/directshowplayerservice.cpp @@ -297,7 +297,8 @@ void DirectShowPlayerService::load(const QMediaContent &media, QIODevice *stream if (m_graph) releaseGraph(); - m_resources = media.resources(); + m_url = media.canonicalUrl(); + m_stream = stream; m_error = QMediaPlayer::NoError; m_errorString = QString(); @@ -312,11 +313,9 @@ void DirectShowPlayerService::load(const QMediaContent &media, QIODevice *stream m_dontCacheNextSeekResult = false; m_metaDataControl->reset(); - if (m_resources.isEmpty() && !stream) { + if (m_url.isEmpty() && !stream) { m_pendingTasks = 0; m_graphStatus = NoMedia; - - m_url.clear(); } else if (stream && (!stream->isReadable() || stream->isSequential())) { m_pendingTasks = 0; m_graphStatus = InvalidMedia; @@ -348,9 +347,6 @@ void DirectShowPlayerService::doSetUrlSource(QMutexLocker *locker) { IBaseFilter *source = 0; - QMediaResource resource = m_resources.takeFirst(); - m_url = resource.url(); - HRESULT hr = E_FAIL; if (m_url.scheme() == QLatin1String("http") || m_url.scheme() == QLatin1String("https")) { static const GUID clsid_WMAsfReader = { diff --git a/src/plugins/directshow/player/directshowplayerservice.h b/src/plugins/directshow/player/directshowplayerservice.h index 4a9e25678..d48b0575a 100644 --- a/src/plugins/directshow/player/directshowplayerservice.h +++ b/src/plugins/directshow/player/directshowplayerservice.h @@ -224,7 +224,6 @@ private: qint64 m_duration; QMediaTimeRange m_playbackRange; QUrl m_url; - QMediaResourceList m_resources; QString m_errorString; QMutex m_mutex; bool m_buffering; |