From 819347370a7f8b442c559b438340f7a94a87dfc0 Mon Sep 17 00:00:00 2001 From: agsantos <aline.gondimsantos@savoirfairelinux.com> Date: Wed, 15 Dec 2021 11:59:45 -0500 Subject: [PATCH] video: fix camera preview opening - Camera preview in av settings now opens after inserting USB camera on a device with `No video device`; - Same for recording video message window. Change-Id: I34ad9b6900865fdc7c4acf861527e4bf8e336123 GitLab: #610 --- src/mainview/components/ChatViewFooter.qml | 2 +- src/mainview/components/RecordBox.qml | 20 +++++++++++++++---- src/settingsview/components/VideoSettings.qml | 13 ++++++++---- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/src/mainview/components/ChatViewFooter.qml b/src/mainview/components/ChatViewFooter.qml index b0f58069d..ea520b3b2 100644 --- a/src/mainview/components/ChatViewFooter.qml +++ b/src/mainview/components/ChatViewFooter.qml @@ -84,7 +84,7 @@ Rectangle { } } - RecordBox{ + RecordBox { id: recordBox visible: false diff --git a/src/mainview/components/RecordBox.qml b/src/mainview/components/RecordBox.qml index 0d2b0e0fe..ccfcc6feb 100644 --- a/src/mainview/components/RecordBox.qml +++ b/src/mainview/components/RecordBox.qml @@ -41,7 +41,6 @@ Rectangle { property int duration: 0 property int state: RecordBox.States.INIT property bool isVideo: false - property bool previewAvailable: false property int preferredWidth: 320 property int preferredHeight: 240 property int btnSize: 40 @@ -61,7 +60,6 @@ Rectangle { if (isVideo) { previewWidget.deviceId = VideoDevices.getDefaultDevice() previewWidget.rendererId = VideoDevices.startDevice(previewWidget.deviceId) - previewAvailable = true } } @@ -243,7 +241,7 @@ Rectangle { anchors.fill: parent - visible: (isVideo && previewAvailable) + visible: (isVideo && VideoDevices.listSize !== 0) color: JamiTheme.blackColor radius: 5 @@ -262,6 +260,14 @@ Rectangle { maskSource: rectBox } } + + onVisibleChanged: { + if (visible) { + previewWidget.deviceId = VideoDevices.getDefaultDevice() + previewWidget.rendererId = VideoDevices.startDevice(previewWidget.deviceId) + } else + VideoDevices.stopDevice(previewWidget.deviceId) + } } Label { @@ -269,7 +275,13 @@ Rectangle { width: root.width - visible: (isVideo && !previewAvailable) + visible: (isVideo && VideoDevices.listSize === 0) + + onVisibleChanged: { + if (visible) { + closeRecorder() + } + } text: JamiStrings.previewUnavailable font.pointSize: JamiTheme.settingsFontSize diff --git a/src/settingsview/components/VideoSettings.qml b/src/settingsview/components/VideoSettings.qml index f15840bbd..a9c813af3 100644 --- a/src/settingsview/components/VideoSettings.qml +++ b/src/settingsview/components/VideoSettings.qml @@ -32,14 +32,12 @@ ColumnLayout { id: root property real aspectRatio: 0.75 - property bool previewAvailable: false property int itemWidth function startPreviewing(force = false) { if (root.visible) { previewWidget.deviceId = VideoDevices.getDefaultDevice() previewWidget.rendererId = VideoDevices.startDevice(previewWidget.deviceId, force) - previewAvailable = true } } @@ -230,11 +228,18 @@ ColumnLayout { maskSource: rectBox } } + + onVisibleChanged: { + if (visible) { + VideoDevices.stopDevice(previewWidget.deviceId) + startPreviewing(true) + } else + VideoDevices.stopDevice(previewWidget.deviceId) + } } Label { - // TODO: proper use of previewAvailable - visible: !previewAvailable + visible: VideoDevices.listSize === 0 Layout.fillWidth: true Layout.preferredHeight: JamiTheme.preferredFieldHeight -- GitLab