summaryrefslogtreecommitdiffstats
path: root/src/plugins/directshow
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/directshow')
-rw-r--r--src/plugins/directshow/camera/directshowcamerazoomcontrol.cpp2
-rw-r--r--src/plugins/directshow/player/directshowplayerservice.cpp5
2 files changed, 4 insertions, 3 deletions
diff --git a/src/plugins/directshow/camera/directshowcamerazoomcontrol.cpp b/src/plugins/directshow/camera/directshowcamerazoomcontrol.cpp
index 209cb5d96..079976e15 100644
--- a/src/plugins/directshow/camera/directshowcamerazoomcontrol.cpp
+++ b/src/plugins/directshow/camera/directshowcamerazoomcontrol.cpp
@@ -176,7 +176,7 @@ void DirectShowCameraZoomControl::updateZoomValues()
}
// Check if there is a pending zoom value.
- if (!qFuzzyCompare(m_currentOpticalZoom, m_requestedOpticalZoom))
+ if (!qFuzzyCompare(m_currentOpticalZoom, m_requestedOpticalZoom) && !qFuzzyIsNull(m_requestedOpticalZoom))
opticalZoomToPrivate(m_requestedOpticalZoom);
}
diff --git a/src/plugins/directshow/player/directshowplayerservice.cpp b/src/plugins/directshow/player/directshowplayerservice.cpp
index d48350fa2..3f7346227 100644
--- a/src/plugins/directshow/player/directshowplayerservice.cpp
+++ b/src/plugins/directshow/player/directshowplayerservice.cpp
@@ -945,7 +945,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;
@@ -971,7 +970,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);
@@ -980,6 +980,7 @@ void DirectShowPlayerService::doPause(QMutexLocker *locker)
m_position = position / qt_directShowTimeScale;
} else {
m_position = 0;
+ m_atEnd = false;
}
m_executedTasks |= Pause;