diff options
author | Liang Qi <liang.qi@qt.io> | 2016-08-13 13:53:51 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2016-08-13 13:53:59 +0200 |
commit | 820205e604a5f281238c23464638fdff72b969d1 (patch) | |
tree | c6f6723449d1b11e8d540752e50e3c2e11613f33 /src/plugins/avfoundation/mediaplayer | |
parent | 03d55888942feac26054978ce4e7c6edd4611eda (diff) | |
parent | c30eeb5b7486caa31cdb0f9279de2f78fed89c54 (diff) |
Merge remote-tracking branch 'origin/5.6' into 5.7
Change-Id: I3204cdf695f4b47730a88a7c41fc7a6de967b161
Diffstat (limited to 'src/plugins/avfoundation/mediaplayer')
-rw-r--r-- | src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm b/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm index 99f06edf3..87bb08e5c 100644 --- a/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm +++ b/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm @@ -464,15 +464,19 @@ void AVFMediaPlayerSession::setMedia(const QMediaContent &content, QIODevice *st m_requestedPosition = -1; Q_EMIT positionChanged(position()); - QMediaPlayer::MediaStatus oldMediaStatus = m_mediaStatus; + const QMediaPlayer::MediaStatus oldMediaStatus = m_mediaStatus; + const QMediaPlayer::State oldState = m_state; if (content.isNull() || content.canonicalUrl().isEmpty()) { m_mediaStatus = QMediaPlayer::NoMedia; - if (m_state != QMediaPlayer::StoppedState) - Q_EMIT stateChanged(m_state = QMediaPlayer::StoppedState); + m_state = QMediaPlayer::StoppedState; if (m_mediaStatus != oldMediaStatus) Q_EMIT mediaStatusChanged(m_mediaStatus); + + if (m_state != oldState) + Q_EMIT stateChanged(m_state); + return; } else { @@ -783,14 +787,15 @@ void AVFMediaPlayerSession::processEOS() #endif Q_EMIT positionChanged(position()); m_mediaStatus = QMediaPlayer::EndOfMedia; + m_state = QMediaPlayer::StoppedState; // At this point, frames should not be rendered anymore. // Clear the output layer to make sure of that. if (m_videoOutput) m_videoOutput->setLayer(0); - Q_EMIT stateChanged(m_state = QMediaPlayer::StoppedState); Q_EMIT mediaStatusChanged(m_mediaStatus); + Q_EMIT stateChanged(m_state); } void AVFMediaPlayerSession::processLoadStateChange() @@ -870,7 +875,11 @@ void AVFMediaPlayerSession::processMediaLoadError() m_requestedPosition = -1; Q_EMIT positionChanged(position()); } + + m_mediaStatus = QMediaPlayer::InvalidMedia; + m_state = QMediaPlayer::StoppedState; + Q_EMIT error(QMediaPlayer::FormatError, tr("Failed to load media")); - Q_EMIT mediaStatusChanged(m_mediaStatus = QMediaPlayer::InvalidMedia); - Q_EMIT stateChanged(m_state = QMediaPlayer::StoppedState); + Q_EMIT mediaStatusChanged(m_mediaStatus); + Q_EMIT stateChanged(m_state); } |