diff --git a/src/FlightDisplay/FlightDisplayView.qml b/src/FlightDisplay/FlightDisplayView.qml index d5af985682b9e7e27fff0620e94e3b2897d52d80..2024fd93c0b8b5bc9b7206e251ffb38150998ed1 100644 --- a/src/FlightDisplay/FlightDisplayView.qml +++ b/src/FlightDisplay/FlightDisplayView.qml @@ -43,6 +43,7 @@ QGCView { property var _geoFenceController: _planMasterController.geoFenceController property var _rallyPointController: _planMasterController.rallyPointController property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle + property var _videoReceiver: QGroundControl.videoManager.videoReceiver property bool _mainIsMap: QGroundControl.videoManager.hasVideo ? QGroundControl.loadBoolGlobalSetting(_mainIsMapKey, true) : true property bool _isPipVisible: QGroundControl.videoManager.hasVideo ? QGroundControl.loadBoolGlobalSetting(_PIPVisibleKey, true) : false property real _savedZoomLevel: 0 @@ -370,14 +371,14 @@ QGCView { anchors.right: _flightVideo.right height: ScreenTools.defaultFontPixelHeight * 2 width: height - visible: QGroundControl.videoManager.videoReceiver.videoRunning && QGroundControl.settingsManager.videoSettings.showRecControl.rawValue + visible: _videoReceiver && _videoReceiver.videoRunning && QGroundControl.settingsManager.videoSettings.showRecControl.rawValue opacity: 0.75 Rectangle { anchors.top: parent.top anchors.bottom: parent.bottom width: height - radius: QGroundControl.videoManager && QGroundControl.videoManager.videoReceiver && QGroundControl.videoManager.videoReceiver.recording ? 0 : height + radius: QGroundControl.videoManager && _videoReceiver && _videoReceiver.recording ? 0 : height color: "red" } @@ -394,7 +395,7 @@ QGCView { MouseArea { anchors.fill: parent - onClicked: QGroundControl.videoManager.videoReceiver && QGroundControl.videoManager.videoReceiver.recording ? QGroundControl.videoManager.videoReceiver.stopRecording() : QGroundControl.videoManager.videoReceiver.startRecording() + onClicked: _videoReceiver && _videoReceiver.recording ? _videoReceiver.stopRecording() : _videoReceiver.startRecording() } } diff --git a/src/FlightDisplay/FlightDisplayViewVideo.qml b/src/FlightDisplay/FlightDisplayViewVideo.qml index 41afb34b9698f69027ddc786668ea38c68ed8cc1..2b8a59337358978b92b4c502f67e064eac8d9498 100644 --- a/src/FlightDisplay/FlightDisplayViewVideo.qml +++ b/src/FlightDisplay/FlightDisplayViewVideo.qml @@ -25,11 +25,13 @@ Item { id: root property double _ar: QGroundControl.settingsManager.videoSettings.aspectRatio.rawValue property bool _showGrid: QGroundControl.settingsManager.videoSettings.gridLines.rawValue > 0 + property var _videoReceiver: QGroundControl.videoManager.videoReceiver + Rectangle { id: noVideo anchors.fill: parent color: Qt.rgba(0,0,0,0.75) - visible: !QGroundControl.videoManager.videoReceiver.videoRunning + visible: !(_videoReceiver && _videoReceiver.videoRunning) QGCLabel { text: qsTr("WAITING FOR VIDEO") font.family: ScreenTools.demiboldFontFamily @@ -41,20 +43,20 @@ Item { Rectangle { anchors.fill: parent color: "black" - visible: QGroundControl.videoManager.videoReceiver.videoRunning + visible: _videoReceiver && _videoReceiver.videoRunning QGCVideoBackground { id: videoContent height: parent.height width: _ar != 0.0 ? height * _ar : parent.width anchors.centerIn: parent - receiver: QGroundControl.videoManager.videoReceiver - display: QGroundControl.videoManager.videoReceiver.videoSurface - visible: QGroundControl.videoManager.videoReceiver.videoRunning + receiver: _videoReceiver + display: _videoReceiver && _videoReceiver.videoSurface + visible: _videoReceiver && _videoReceiver.videoRunning Connections { - target: QGroundControl.videoManager.videoReceiver + target: _videoReceiver onImageFileChanged: { videoContent.grabToImage(function(result) { - if (!result.saveToFile(QGroundControl.videoManager.videoReceiver.imageFile)) { + if (!result.saveToFile(_videoReceiver.imageFile)) { console.error('Error capturing video frame'); } });