When resource is lost pause the pipeline instead of stopping it.

Change-Id: Iccbf2f820ec6373d5853accc064dad659858514c
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
This commit is contained in:
Lev Zelenskiy
2012-05-11 14:47:03 +10:00
committed by Qt by Nokia
parent 3339324b0e
commit 26e4c8cff7

View File

@@ -363,18 +363,6 @@ void QGstreamerPlayerControl::setMedia(const QMediaContent &content, QIODevice *
if (!content.isNull() || stream) { if (!content.isNull() || stream) {
if (!m_resources->isGranted()) if (!m_resources->isGranted())
m_resources->acquire(); m_resources->acquire();
if (!m_resources->isGranted()) {
m_currentResource = content;
m_stream = stream;
m_state = QMediaPlayer::StoppedState;
m_mediaStatus = QMediaPlayer::LoadingMedia;
if (m_currentResource != oldMedia)
emit mediaChanged(m_currentResource);
popAndNotifyState();
return;
}
} else { } else {
m_resources->release(); m_resources->release();
} }
@@ -703,17 +691,8 @@ void QGstreamerPlayerControl::handleResourcesGranted()
{ {
pushState(); pushState();
QMediaPlayer::State state = m_state; if (m_state != QMediaPlayer::StoppedState)
playOrPause(m_state);
//preserve m_pendingSeekPosition, it's reset on setMedia
qint64 pos = m_pendingSeekPosition;
setMedia(m_currentResource, m_stream);
if (pos != -1)
setPosition(pos);
if (state != QMediaPlayer::StoppedState)
playOrPause(state);
else else
updateMediaStatus(); updateMediaStatus();
@@ -722,17 +701,13 @@ void QGstreamerPlayerControl::handleResourcesGranted()
void QGstreamerPlayerControl::handleResourcesLost() void QGstreamerPlayerControl::handleResourcesLost()
{ {
//on resource lost the pipeline should be stopped //on resource lost the pipeline should be paused
//player status is changed to paused //player status is changed to paused
pushState(); pushState();
QMediaPlayer::State oldState = m_state; QMediaPlayer::State oldState = m_state;
qint64 pos = m_session->position(); m_session->pause();
m_session->stop();
m_pendingSeekPosition = pos;
//don't blink the first video frame after playback is restored
m_session->showPrerollFrames(false);
if (oldState != QMediaPlayer::StoppedState ) if (oldState != QMediaPlayer::StoppedState )
m_state = QMediaPlayer::PausedState; m_state = QMediaPlayer::PausedState;
@@ -742,9 +717,8 @@ void QGstreamerPlayerControl::handleResourcesLost()
void QGstreamerPlayerControl::handleResourcesDenied() void QGstreamerPlayerControl::handleResourcesDenied()
{ {
//on resource lost the pipeline should stay stopped //on resource denied the pipeline should stay paused
//player status is changed to paused with //player status is changed to paused
//pending seek position preserved.
pushState(); pushState();
if (m_state != QMediaPlayer::StoppedState ) if (m_state != QMediaPlayer::StoppedState )