diff options
author | Val Doroshchuk <valentyn.doroshchuk@qt.io> | 2019-04-08 13:26:38 +0200 |
---|---|---|
committer | VaL Doroshchuk <valentyn.doroshchuk@qt.io> | 2019-04-10 07:08:29 +0000 |
commit | c8716f68feb5a38473cbd54972b9a9f095e9e24d (patch) | |
tree | 0769bde2aeef5bdc6cf5a0b48f3ab60885553a2f /src/plugins/directshow | |
parent | 4fb893c9375a8e721f8de01230e6d5d64dc92375 (diff) |
Windows: Reset position on pause in QMediaPlayer after EOS
pause() should reset position to the beginning after EOS.
Fixes tst_QMediaPlayerBackend::processEOS
Task-number: QTBUG-65574
Change-Id: I4802102bde657d7a3dde0b426c335b021207ae08
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
Diffstat (limited to 'src/plugins/directshow')
-rw-r--r-- | src/plugins/directshow/player/directshowplayerservice.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/plugins/directshow/player/directshowplayerservice.cpp b/src/plugins/directshow/player/directshowplayerservice.cpp index 08d99d735..3974c59a5 100644 --- a/src/plugins/directshow/player/directshowplayerservice.cpp +++ b/src/plugins/directshow/player/directshowplayerservice.cpp @@ -951,7 +951,6 @@ void DirectShowPlayerService::pause() if (m_executedTasks & Render) { if (m_executedTasks & Stop) { - m_atEnd = false; if (m_seekPosition == -1) { m_dontCacheNextSeekResult = true; m_seekPosition = 0; @@ -977,7 +976,8 @@ void DirectShowPlayerService::doPause(QMutexLocker *locker) control->Release(); if (SUCCEEDED(hr)) { - if (IMediaSeeking *seeking = com_cast<IMediaSeeking>(m_graph, IID_IMediaSeeking)) { + IMediaSeeking *seeking = com_cast<IMediaSeeking>(m_graph, IID_IMediaSeeking); + if (!m_atEnd && seeking) { LONGLONG position = 0; seeking->GetCurrentPosition(&position); @@ -986,6 +986,7 @@ void DirectShowPlayerService::doPause(QMutexLocker *locker) m_position = position / qt_directShowTimeScale; } else { m_position = 0; + m_atEnd = false; } m_executedTasks |= Pause; |