diff options
author | Yoann Lopes <yoann.lopes@digia.com> | 2013-10-17 12:22:42 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-10-18 09:21:18 +0200 |
commit | d7dd22b9955ffde6d3c663655d9f9d4a58ca3894 (patch) | |
tree | fda246fcb42f08d09b030e0e3334620a92474fd8 /src/imports | |
parent | 068169528c5e8a281b448c21d6eb5dbd88911dc0 (diff) |
Correctly clear the current media in Audio and MediaPlayer qml elements.v5.2.0-beta1
When setting the source to an empty string in these elements, pass an
empty QMediaContent to the backend rather than an empty URL. The former
is the correct way to clear the current media.
Task-number: QTBUG-34125
Change-Id: I3dd7b07abc0bd23a1253c8c0e075b174c17a4d3f
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
Diffstat (limited to 'src/imports')
-rw-r--r-- | src/imports/multimedia/qdeclarativeaudio.cpp | 15 | ||||
-rw-r--r-- | src/imports/multimedia/qdeclarativeaudio_p.h | 1 |
2 files changed, 9 insertions, 7 deletions
diff --git a/src/imports/multimedia/qdeclarativeaudio.cpp b/src/imports/multimedia/qdeclarativeaudio.cpp index 1da92c308..bce0b7e2a 100644 --- a/src/imports/multimedia/qdeclarativeaudio.cpp +++ b/src/imports/multimedia/qdeclarativeaudio.cpp @@ -183,8 +183,9 @@ void QDeclarativeAudio::setSource(const QUrl &url) return; m_source = url; + m_content = m_source.isEmpty() ? QMediaContent() : m_source; m_loaded = false; - if (m_complete && (m_autoLoad || url.isEmpty() || m_autoPlay)) { + if (m_complete && (m_autoLoad || m_content.isNull() || m_autoPlay)) { if (m_error != QMediaPlayer::ServiceMissingError && m_error != QMediaPlayer::NoError) { m_error = QMediaPlayer::NoError; m_errorString = QString(); @@ -192,7 +193,7 @@ void QDeclarativeAudio::setSource(const QUrl &url) emit errorChanged(); } - m_player->setMedia(m_source, 0); + m_player->setMedia(m_content, 0); m_loaded = true; } else @@ -245,7 +246,7 @@ void QDeclarativeAudio::setPlaybackState(QMediaPlayer::State playbackState) switch (playbackState){ case (QMediaPlayer::PlayingState): if (!m_loaded) { - m_player->setMedia(m_source, 0); + m_player->setMedia(m_content, 0); m_player->setPosition(m_position); m_loaded = true; } @@ -254,7 +255,7 @@ void QDeclarativeAudio::setPlaybackState(QMediaPlayer::State playbackState) case (QMediaPlayer::PausedState): if (!m_loaded) { - m_player->setMedia(m_source, 0); + m_player->setMedia(m_content, 0); m_player->setPosition(m_position); m_loaded = true; } @@ -681,8 +682,8 @@ void QDeclarativeAudio::componentComplete() if (!qFuzzyCompare(m_playbackRate, qreal(1.0))) m_player->setPlaybackRate(m_playbackRate); - if (!m_source.isEmpty() && (m_autoLoad || m_autoPlay)) { - m_player->setMedia(m_source, 0); + if (!m_content.isNull() && (m_autoLoad || m_autoPlay)) { + m_player->setMedia(m_content, 0); m_loaded = true; if (m_position > 0) m_player->setPosition(m_position); @@ -691,7 +692,7 @@ void QDeclarativeAudio::componentComplete() m_complete = true; if (m_autoPlay) { - if (m_source.isEmpty()) { + if (m_content.isNull()) { m_player->stop(); } else { m_player->play(); diff --git a/src/imports/multimedia/qdeclarativeaudio_p.h b/src/imports/multimedia/qdeclarativeaudio_p.h index b8a75c659..1c67bc3ad 100644 --- a/src/imports/multimedia/qdeclarativeaudio_p.h +++ b/src/imports/multimedia/qdeclarativeaudio_p.h @@ -257,6 +257,7 @@ private: QMediaPlayer::Error m_error; QString m_errorString; QUrl m_source; + QMediaContent m_content; QScopedPointer<QDeclarativeMediaMetaData> m_metaData; |