From 5f15380e7c807c8111c32fc9bcf53189a868d23c Mon Sep 17 00:00:00 2001
From: Ihor Dutchak <ihor.youw@gmail.com>
Date: Sun, 17 Mar 2019 00:46:30 +0200
Subject: [PATCH] DirectShow: don't change camera zoom level if not requested

DirectShowCameraZoomControl sets camera zoom level to 1x each time,
when camera goes into LoadedStatus (e.g. on stream stop), which is
inconveniant, specially if camera has physical remote, and zoom level
may be changed externally.
Disable this behavior, if zoom level was not requested explicitly
by zoomTo(...) function from client code.

Fixes: QTBUG-74180
Change-Id: I99ff76af04f80c630a0c397db5713e6706ebf175
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
Reviewed-by: Ihor Dutchak <ihor.youw@gmail.com>
---
 src/plugins/directshow/camera/directshowcamerazoomcontrol.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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);
 }
 
-- 
GitLab