diff --git a/src/app/commoncomponents/LocalVideo.qml b/src/app/commoncomponents/LocalVideo.qml
index 3b7c43822f626bd285339e8153874ea87e3cb4de..435ff99308cc8256e5b402972b3f55c843e8685b 100644
--- a/src/app/commoncomponents/LocalVideo.qml
+++ b/src/app/commoncomponents/LocalVideo.qml
@@ -27,12 +27,13 @@ VideoView {
 
     crop: true
 
-    function startWithId(id, force = false) {
+    function startWithId(id) {
         if (id.length === 0) {
             VideoDevices.stopDevice(rendererId)
             rendererId = id
         } else {
-            rendererId = VideoDevices.startDevice(id, force)
+            if (rendererId !== id)
+                rendererId = VideoDevices.startDevice(id)
         }
     }
 }
diff --git a/src/app/mainview/components/InitialCallPage.qml b/src/app/mainview/components/InitialCallPage.qml
index c0f63732b48042056ad84e69875d160a022e7daf..cf8dd9b0dbd6e0f4ccb93b1ee315be49e6d0c0e2 100644
--- a/src/app/mainview/components/InitialCallPage.qml
+++ b/src/app/mainview/components/InitialCallPage.qml
@@ -56,15 +56,14 @@ Rectangle {
         Timer {
             id: controlPreview
             property bool startVideo
-            interval: 1000;
-            running: false;
-            repeat: false
+            interval: 1000
             onTriggered: {
-                var rendId = visible && start ? VideoDevices.getDefaultDevice() : ""
+                var rendId = visible && startVideo ? VideoDevices.getDefaultDevice() : ""
                 previewRenderer.startWithId(rendId)
             }
         }
         onVisibleChanged: {
+            controlPreview.stop()
             if (visible) {
                 controlPreview.startVideo = true
                 controlPreview.interval = 1000
diff --git a/src/app/mainview/components/OngoingCallPage.qml b/src/app/mainview/components/OngoingCallPage.qml
index 50064361a2c314035b1edd39a78e2e1ee9e781b8..5917cfa9ebcc70e4823e86efb0d5d2ed31bc18c3 100644
--- a/src/app/mainview/components/OngoingCallPage.qml
+++ b/src/app/mainview/components/OngoingCallPage.qml
@@ -211,14 +211,13 @@ Rectangle {
                     id: controlPreview
                     property bool startVideo
                     interval: 1000
-                    running: false
-                    repeat: false
                     onTriggered: {
-                        var rendId = visible && start ? root.callPreviewId : ""
+                        var rendId = visible && startVideo ? root.callPreviewId : ""
                         previewRenderer.startWithId(rendId)
                     }
                 }
                 onVisibleChanged: {
+                    controlPreview.stop()
                     if (visible) {
                         controlPreview.startVideo = true
                         controlPreview.interval = 1000
diff --git a/src/app/mainview/components/SelectScreen.qml b/src/app/mainview/components/SelectScreen.qml
index ce109c0f0bf5531f078530e9490f1f633aee686d..c3427120aaeefe3230cf8853dcaf39a9535cb3de 100644
--- a/src/app/mainview/components/SelectScreen.qml
+++ b/src/app/mainview/components/SelectScreen.qml
@@ -162,14 +162,14 @@ Window {
 
                             Component.onDestruction: {
                                 if (rendererId !== "" && rendererId !== currentPreview) {
-                                    VideoDevices.stopDevice(rendererId, true)
+                                    VideoDevices.stopDevice(rendererId)
                                 }
                             }
                             Component.onCompleted: {
                                 if (visible) {
                                     const rId = AvAdapter.getSharingResource(index, "")
                                     if (rId !== "") {
-                                        rendererId = VideoDevices.startDevice(rId, true)
+                                        rendererId = VideoDevices.startDevice(rId)
                                     }
                                 }
                             }
@@ -234,14 +234,14 @@ Window {
 
                         Component.onDestruction: {
                             if (rendererId !== "" && rendererId !== currentPreview) {
-                                VideoDevices.stopDevice(rendererId, true)
+                                VideoDevices.stopDevice(rendererId)
                             }
                         }
                         Component.onCompleted: {
                             if (visible) {
                                 const rId = AvAdapter.getSharingResource(-1, "")
                                 if (rId !== "") {
-                                    rendererId = VideoDevices.startDevice(rId, true)
+                                    rendererId = VideoDevices.startDevice(rId)
                                 }
                             }
                         }
@@ -314,14 +314,14 @@ Window {
 
                             Component.onDestruction: {
                                 if (rendererId !== "" && rendererId !== currentPreview) {
-                                    VideoDevices.stopDevice(rendererId, true)
+                                    VideoDevices.stopDevice(rendererId)
                                 }
                             }
                             Component.onCompleted: {
                                 if (visible) {
                                     const rId = AvAdapter.getSharingResource(-2, AvAdapter.windowsIds[index - Qt.application.screens.length])
                                     if (rId !== "") {
-                                        rendererId = VideoDevices.startDevice(rId, true)
+                                        rendererId = VideoDevices.startDevice(rId)
                                     }
                                 }
                             }
diff --git a/src/app/settingsview/components/VideoSettings.qml b/src/app/settingsview/components/VideoSettings.qml
index 26aaa618970032a39eab9b45443c997e8c46a5b2..fee9be76063261106119985a9d9df237abd6c1df 100644
--- a/src/app/settingsview/components/VideoSettings.qml
+++ b/src/app/settingsview/components/VideoSettings.qml
@@ -40,7 +40,7 @@ ColumnLayout {
         if (!visible) {
             return
         }
-        previewWidget.startWithId(VideoDevices.getDefaultDevice(), force)
+        previewWidget.startWithId(VideoDevices.getDefaultDevice())
     }
 
     onVisibleChanged: {
diff --git a/src/app/videodevices.cpp b/src/app/videodevices.cpp
index fe7c1251f97c5aadabf4bb8f66e851273ceb898d..f872cc87a7a2fdb4ae28c9a154fb0485507350d3 100644
--- a/src/app/videodevices.cpp
+++ b/src/app/videodevices.cpp
@@ -236,25 +236,22 @@ VideoDevices::getDefaultDevice()
 }
 
 QString
-VideoDevices::startDevice(const QString& id, bool force)
+VideoDevices::startDevice(const QString& id)
 {
     if (id.isEmpty())
         return {};
     auto& avModel = lrcInstance_->avModel();
     if (avModel.hasRenderer(id)) {
-        if (!force) {
-            return id;
-        }
-        avModel.stopPreview(id);
+        return id;
     }
     deviceOpen_ = true;
     return avModel.startPreview(id);
 }
 
 void
-VideoDevices::stopDevice(const QString& id, bool force)
+VideoDevices::stopDevice(const QString& id)
 {
-    if (!id.isEmpty() && (!lrcInstance_->hasActiveCall(true) || force)) {
+    if (!id.isEmpty()) {
         lrcInstance_->avModel().stopPreview(id);
         deviceOpen_ = false;
     }
diff --git a/src/app/videodevices.h b/src/app/videodevices.h
index aee88af88461376c27af179ef3de3032b7e5eb59..0ab4d5afe1e6759acc8ccd9fbb67352c9a7c02f5 100644
--- a/src/app/videodevices.h
+++ b/src/app/videodevices.h
@@ -135,8 +135,8 @@ public:
 
     Q_INVOKABLE void setDefaultDevice(int index);
     Q_INVOKABLE const QString getDefaultDevice();
-    Q_INVOKABLE QString startDevice(const QString& deviceId, bool force = false);
-    Q_INVOKABLE void stopDevice(const QString& deviceId, bool force = false);
+    Q_INVOKABLE QString startDevice(const QString& deviceId);
+    Q_INVOKABLE void stopDevice(const QString& deviceId);
     Q_INVOKABLE void setDefaultDeviceRes(int index);
     Q_INVOKABLE void setDefaultDeviceFps(int index);
     Q_INVOKABLE void setDisplayFPS(const QString& fps);