summaryrefslogtreecommitdiffstats
path: root/src/plugins/directshow
diff options
context:
space:
mode:
authorVal Doroshchuk <valentyn.doroshchuk@qt.io>2019-04-08 13:26:38 +0200
committerVaL Doroshchuk <valentyn.doroshchuk@qt.io>2019-04-10 07:08:29 +0000
commitc8716f68feb5a38473cbd54972b9a9f095e9e24d (patch)
tree0769bde2aeef5bdc6cf5a0b48f3ab60885553a2f /src/plugins/directshow
parent4fb893c9375a8e721f8de01230e6d5d64dc92375 (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.cpp5
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;