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:
committed by
Qt by Nokia
parent
3339324b0e
commit
26e4c8cff7
@@ -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 )
|
||||||
|
|||||||
Reference in New Issue
Block a user