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