From e43147716fb24696246d727d2175d531f6150df0 Mon Sep 17 00:00:00 2001 From: dheideman Date: Thu, 20 Jul 2017 10:44:32 -0700 Subject: [PATCH 1/3] Flight display: Remove video record button when gstreamer is not installed --- src/FlightDisplay/FlightDisplayView.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/FlightDisplay/FlightDisplayView.qml b/src/FlightDisplay/FlightDisplayView.qml index d5af985..c32bf29 100644 --- a/src/FlightDisplay/FlightDisplayView.qml +++ b/src/FlightDisplay/FlightDisplayView.qml @@ -370,7 +370,7 @@ QGCView { anchors.right: _flightVideo.right height: ScreenTools.defaultFontPixelHeight * 2 width: height - visible: QGroundControl.videoManager.videoReceiver.videoRunning && QGroundControl.settingsManager.videoSettings.showRecControl.rawValue + visible: QGroundControl.videoManager.videoReceiver && QGroundControl.videoManager.videoReceiver.videoRunning && QGroundControl.settingsManager.videoSettings.showRecControl.rawValue opacity: 0.75 Rectangle { From 317636e6774fe3edb6c9b969ce073660fd49c279 Mon Sep 17 00:00:00 2001 From: dheideman Date: Thu, 20 Jul 2017 14:18:56 -0700 Subject: [PATCH 2/3] Flight display: Create property variable --- src/FlightDisplay/FlightDisplayView.qml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/FlightDisplay/FlightDisplayView.qml b/src/FlightDisplay/FlightDisplayView.qml index c32bf29..2024fd9 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 && 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() } } From 256fed269baa467f9e8ebb9d98e3269eee63070e Mon Sep 17 00:00:00 2001 From: dheideman Date: Fri, 21 Jul 2017 14:30:29 -0700 Subject: [PATCH 3/3] Flight display: Fixed TypeErrors on startup without gstream installed --- src/FlightDisplay/FlightDisplayViewVideo.qml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/FlightDisplay/FlightDisplayViewVideo.qml b/src/FlightDisplay/FlightDisplayViewVideo.qml index 41afb34..2b8a593 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'); } });