diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/wmf/player/mfplayercontrol.cpp | 7 | ||||
-rw-r--r-- | src/plugins/wmf/player/mfplayersession.cpp | 10 | ||||
-rw-r--r-- | src/plugins/wmf/player/mfplayersession.h | 2 |
3 files changed, 14 insertions, 5 deletions
diff --git a/src/plugins/wmf/player/mfplayercontrol.cpp b/src/plugins/wmf/player/mfplayercontrol.cpp index cb76a037a..e3a3d80cd 100644 --- a/src/plugins/wmf/player/mfplayercontrol.cpp +++ b/src/plugins/wmf/player/mfplayercontrol.cpp @@ -72,7 +72,12 @@ MFPlayerControl::~MFPlayerControl() void MFPlayerControl::setMedia(const QMediaContent &media, QIODevice *stream) { - stop(); + if (m_state != QMediaPlayer::StoppedState) { + changeState(QMediaPlayer::StoppedState); + m_session->stop(true); + refreshState(); + } + m_media = media; m_stream = stream; resetAudioVideoAvailable(); diff --git a/src/plugins/wmf/player/mfplayersession.cpp b/src/plugins/wmf/player/mfplayersession.cpp index 42b4f60d2..afe91da7a 100644 --- a/src/plugins/wmf/player/mfplayersession.cpp +++ b/src/plugins/wmf/player/mfplayersession.cpp @@ -681,12 +681,12 @@ IMFTopologyNode* MFPlayerSession::addOutputNode(IMFStreamDescriptor *streamDesc, return NULL; } -void MFPlayerSession::stop() +void MFPlayerSession::stop(bool immediate) { #ifdef DEBUG_MEDIAFOUNDATION qDebug() << "stop"; #endif - if (m_pendingState != NoPending) { + if (!immediate && m_pendingState != NoPending) { m_request.setCommand(CmdStop); } else { if (m_state.command == CmdStop) @@ -1186,7 +1186,11 @@ void MFPlayerSession::handleSessionEvent(IMFMediaEvent *sessionEvent) if (m_status != QMediaPlayer::EndOfMedia) { m_varStart.vt = VT_I8; m_varStart.hVal.QuadPart = 0; - changeStatus(QMediaPlayer::LoadedMedia); + + //only change to loadedMedia when not loading a new media source + if (m_status != QMediaPlayer::LoadingMedia) { + changeStatus(QMediaPlayer::LoadedMedia); + } } updatePendingCommands(CmdStop); break; diff --git a/src/plugins/wmf/player/mfplayersession.h b/src/plugins/wmf/player/mfplayersession.h index 933c865f9..169a404a5 100644 --- a/src/plugins/wmf/player/mfplayersession.h +++ b/src/plugins/wmf/player/mfplayersession.h @@ -94,7 +94,7 @@ public: } void load(const QMediaContent &media, QIODevice *stream); - void stop(); + void stop(bool immediate = false); void start(); void pause(); |