diff --git a/resources/icons/qgroundcontrol.png b/resources/icons/qgroundcontrol.png index 66ecd29..8a313cc 100644 Binary files a/resources/icons/qgroundcontrol.png and b/resources/icons/qgroundcontrol.png differ diff --git a/resources/notile.png b/resources/notile.png index cbd241e..d0914c2 100644 Binary files a/resources/notile.png and b/resources/notile.png differ diff --git a/src/FirmwarePlugin/APM/APMBrandImage.png b/src/FirmwarePlugin/APM/APMBrandImage.png index 2c4c59f..2a0692e 100644 Binary files a/src/FirmwarePlugin/APM/APMBrandImage.png and b/src/FirmwarePlugin/APM/APMBrandImage.png differ diff --git a/src/FlightDisplay/FlyViewVideo.qml b/src/FlightDisplay/FlyViewVideo.qml index 16f3821..a8fe5ac 100644 --- a/src/FlightDisplay/FlyViewVideo.qml +++ b/src/FlightDisplay/FlyViewVideo.qml @@ -61,7 +61,7 @@ Item { id: cameraLoader anchors.fill: parent visible: !QGroundControl.videoManager.isGStreamer - source: visible ? (QGroundControl.videoManager.uvcEnabled ? "qrc:/qml/FlightDisplayViewUVC.qml" : "qrc:/qml/FlightDisplayViewDummy.qml") : "" + source: QGroundControl.videoManager.uvcEnabled ? "qrc:/qml/FlightDisplayViewUVC.qml" : "qrc:/qml/FlightDisplayViewDummy.qml" } QGCLabel { diff --git a/src/FlightDisplay/FlyViewWidgetLayer.qml b/src/FlightDisplay/FlyViewWidgetLayer.qml index 8c7c47d..76cf0c9 100644 --- a/src/FlightDisplay/FlyViewWidgetLayer.qml +++ b/src/FlightDisplay/FlyViewWidgetLayer.qml @@ -62,7 +62,7 @@ Item { topEdgeRightInset: parentToolInsets.topEdgeRightInset bottomEdgeLeftInset: parentToolInsets.bottomEdgeLeftInset bottomEdgeCenterInset: mapScale.centerInset - bottomEdgeRightInset: telemetryPanel.bottomInset + bottomEdgeRightInset: 0 } FlyViewMissionCompleteDialog { diff --git a/src/PositionManager/PositionManager.cpp b/src/PositionManager/PositionManager.cpp index 536fb05..10d26c3 100644 --- a/src/PositionManager/PositionManager.cpp +++ b/src/PositionManager/PositionManager.cpp @@ -11,6 +11,12 @@ #include "QGCApplication.h" #include "QGCCorePlugin.h" +#if !defined(NO_SERIAL_LINK) && !defined(__android__) +#include +#endif + +#include + QGCPositionManager::QGCPositionManager(QGCApplication* app, QGCToolbox* toolbox) : QGCTool (app, toolbox) { @@ -39,7 +45,34 @@ void QGCPositionManager::setToolbox(QGCToolbox *toolbox) if (!_defaultSource) { //-- Otherwise, create a default one +#if 0 + // Calling this can end up falling through a path which tries to instantiate a serialnmea source. + // The Qt code for this will pop a qWarning if there are no serial ports available. This in turn + // causes you to be unable to run with QT_FATAL_WARNINGS=1 to debug stuff. _defaultSource = QGeoPositionInfoSource::createDefaultSource(this); +#else + // So instead we create our own version of QGeoPositionInfoSource::createDefaultSource which isn't as stupid. + QList plugins = QGeoPositionInfoSourcePrivate::pluginsSorted(); + foreach (const QJsonObject &obj, plugins) { + if (obj.value("Position").isBool() && obj.value("Position").toBool()) { + QString pluginName = obj.value("Keys").toArray()[0].toString(); + if (pluginName == "serialnmea") { +#if !defined(NO_SERIAL_LINK) && !defined(__android__) + if (QSerialPortInfo::availablePorts().isEmpty()) { + // This prevents the qWarning from popping + continue; + } +#else + continue; +#endif + } + _defaultSource = QGeoPositionInfoSource::createSource(pluginName, this); + if (_defaultSource) { + break; + } + } + } +#endif } _simulatedSource = new SimulatedPosition();