From ab25a46aba953026b1db17c6262c19b2d5a92e87 Mon Sep 17 00:00:00 2001 From: DonLakeFlyer Date: Tue, 4 Apr 2017 15:08:02 -0700 Subject: [PATCH] Fix crash on exit due to bad parenting/shutdown sequence --- src/FactSystem/Fact.cc | 6 ++ src/FactSystem/FactSystem.cc | 4 +- src/FactSystem/FactSystem.h | 2 +- src/FirmwarePlugin/FirmwarePluginManager.cc | 4 +- src/FirmwarePlugin/FirmwarePluginManager.h | 2 +- src/FlightDisplay/VideoManager.cc | 4 +- src/FlightDisplay/VideoManager.h | 2 +- src/FollowMe/FollowMe.cc | 9 +-- src/FollowMe/FollowMe.h | 3 +- src/GAudioOutput.cc | 4 +- src/GAudioOutput.h | 2 +- src/Joystick/JoystickManager.cc | 4 +- src/Joystick/JoystickManager.h | 2 +- src/MissionManager/MissionCommandTree.cc | 4 +- src/MissionManager/MissionCommandTree.h | 2 +- src/PositionManager/PositionManager.cpp | 8 +-- src/PositionManager/PositionManager.h | 2 +- src/QGCApplication.cc | 2 +- src/QGCToolbox.cc | 62 +++++++------------ src/QGCToolbox.h | 13 ++-- src/QmlControls/QGCImageProvider.cc | 4 +- src/QmlControls/QGCImageProvider.h | 2 +- src/QmlControls/QGroundControlQmlGlobal.cc | 4 +- src/QmlControls/QGroundControlQmlGlobal.h | 2 +- .../QMLControl/QGCMapEngineManager.cc | 4 +- .../QMLControl/QGCMapEngineManager.h | 2 +- src/Settings/SettingsManager.cc | 4 +- src/Settings/SettingsManager.h | 2 +- src/Vehicle/MAVLinkLogManager.cc | 4 +- src/Vehicle/MAVLinkLogManager.h | 2 +- src/Vehicle/MultiVehicleManager.cc | 4 +- src/Vehicle/MultiVehicleManager.h | 2 +- src/api/QGCCorePlugin.cc | 4 +- src/api/QGCCorePlugin.h | 2 +- src/comm/LinkManager.cc | 4 +- src/comm/LinkManager.h | 2 +- src/comm/MAVLinkProtocol.cc | 4 +- src/comm/MAVLinkProtocol.h | 2 +- src/uas/UASMessageHandler.cc | 4 +- src/uas/UASMessageHandler.h | 2 +- 40 files changed, 92 insertions(+), 109 deletions(-) diff --git a/src/FactSystem/Fact.cc b/src/FactSystem/Fact.cc index 02bc87863..234579be4 100644 --- a/src/FactSystem/Fact.cc +++ b/src/FactSystem/Fact.cc @@ -15,6 +15,7 @@ #include "QGCMAVLink.h" #include +#include Fact::Fact(QObject* parent) : QObject(parent) @@ -27,6 +28,9 @@ Fact::Fact(QObject* parent) { FactMetaData* metaData = new FactMetaData(_type, this); setMetaData(metaData); + + // Better sage than sorry on object ownership + QQmlEngine::setObjectOwnership(this, QQmlEngine::CppOwnership); } Fact::Fact(int componentId, QString name, FactMetaData::ValueType_t type, QObject* parent) @@ -41,12 +45,14 @@ Fact::Fact(int componentId, QString name, FactMetaData::ValueType_t type, QObjec { FactMetaData* metaData = new FactMetaData(_type, this); setMetaData(metaData); + QQmlEngine::setObjectOwnership(this, QQmlEngine::CppOwnership); } Fact::Fact(const Fact& other, QObject* parent) : QObject(parent) { *this = other; + QQmlEngine::setObjectOwnership(this, QQmlEngine::CppOwnership); } const Fact& Fact::operator=(const Fact& other) diff --git a/src/FactSystem/FactSystem.cc b/src/FactSystem/FactSystem.cc index 0b9cb3de3..146986f2b 100644 --- a/src/FactSystem/FactSystem.cc +++ b/src/FactSystem/FactSystem.cc @@ -19,8 +19,8 @@ const char* FactSystem::_factSystemQmlUri = "QGroundControl.FactSystem"; -FactSystem::FactSystem(QGCApplication* app) - : QGCTool(app) +FactSystem::FactSystem(QGCApplication* app, QGCToolbox* toolbox) + : QGCTool(app, toolbox) { } diff --git a/src/FactSystem/FactSystem.h b/src/FactSystem/FactSystem.h index deb1aebec..e4321cddf 100644 --- a/src/FactSystem/FactSystem.h +++ b/src/FactSystem/FactSystem.h @@ -31,7 +31,7 @@ class FactSystem : public QGCTool public: /// All access to FactSystem is through FactSystem::instance, so constructor is private - FactSystem(QGCApplication* app); + FactSystem(QGCApplication* app, QGCToolbox* toolbox); // Override from QGCTool virtual void setToolbox(QGCToolbox *toolbox); diff --git a/src/FirmwarePlugin/FirmwarePluginManager.cc b/src/FirmwarePlugin/FirmwarePluginManager.cc index 6dd4264dc..094ac201a 100644 --- a/src/FirmwarePlugin/FirmwarePluginManager.cc +++ b/src/FirmwarePlugin/FirmwarePluginManager.cc @@ -14,8 +14,8 @@ #include "FirmwarePluginManager.h" #include "FirmwarePlugin.h" -FirmwarePluginManager::FirmwarePluginManager(QGCApplication* app) - : QGCTool(app) +FirmwarePluginManager::FirmwarePluginManager(QGCApplication* app, QGCToolbox* toolbox) + : QGCTool(app, toolbox) , _genericFirmwarePlugin(NULL) { diff --git a/src/FirmwarePlugin/FirmwarePluginManager.h b/src/FirmwarePlugin/FirmwarePluginManager.h index bc1607fe8..30452873b 100644 --- a/src/FirmwarePlugin/FirmwarePluginManager.h +++ b/src/FirmwarePlugin/FirmwarePluginManager.h @@ -29,7 +29,7 @@ class FirmwarePluginManager : public QGCTool Q_OBJECT public: - FirmwarePluginManager(QGCApplication* app); + FirmwarePluginManager(QGCApplication* app, QGCToolbox* toolbox); ~FirmwarePluginManager(); /// Returns list of firmwares which are supported by the system diff --git a/src/FlightDisplay/VideoManager.cc b/src/FlightDisplay/VideoManager.cc index c5c858b59..b6c5a83ea 100644 --- a/src/FlightDisplay/VideoManager.cc +++ b/src/FlightDisplay/VideoManager.cc @@ -30,8 +30,8 @@ QGC_LOGGING_CATEGORY(VideoManagerLog, "VideoManagerLog") //----------------------------------------------------------------------------- -VideoManager::VideoManager(QGCApplication* app) - : QGCTool(app) +VideoManager::VideoManager(QGCApplication* app, QGCToolbox* toolbox) + : QGCTool(app, toolbox) , _videoSurface(NULL) , _videoReceiver(NULL) , _videoRunning(false) diff --git a/src/FlightDisplay/VideoManager.h b/src/FlightDisplay/VideoManager.h index aaffec22e..162da00b0 100644 --- a/src/FlightDisplay/VideoManager.h +++ b/src/FlightDisplay/VideoManager.h @@ -29,7 +29,7 @@ class VideoManager : public QGCTool Q_OBJECT public: - VideoManager (QGCApplication* app); + VideoManager (QGCApplication* app, QGCToolbox* toolbox); ~VideoManager (); Q_PROPERTY(bool hasVideo READ hasVideo NOTIFY hasVideoChanged) diff --git a/src/FollowMe/FollowMe.cc b/src/FollowMe/FollowMe.cc index 1bb1e1880..0681ca2bd 100644 --- a/src/FollowMe/FollowMe.cc +++ b/src/FollowMe/FollowMe.cc @@ -17,8 +17,8 @@ #include "Vehicle.h" #include "PositionManager.h" -FollowMe::FollowMe(QGCApplication* app) - : QGCTool(app), estimatation_capabilities(0) +FollowMe::FollowMe(QGCApplication* app, QGCToolbox* toolbox) + : QGCTool(app, toolbox), estimatation_capabilities(0) { memset(&_motionReport, 0, sizeof(motionReport_s)); runTime.start(); @@ -27,11 +27,6 @@ FollowMe::FollowMe(QGCApplication* app) connect(&_gcsMotionReportTimer, &QTimer::timeout, this, &FollowMe::_sendGCSMotionReport); } -FollowMe::~FollowMe() -{ - _disable(); -} - void FollowMe::followMeHandleManager(const QString&) { QmlObjectListModel & vehicles = *_toolbox->multiVehicleManager()->vehicles(); diff --git a/src/FollowMe/FollowMe.h b/src/FollowMe/FollowMe.h index c75b5759d..541df1112 100644 --- a/src/FollowMe/FollowMe.h +++ b/src/FollowMe/FollowMe.h @@ -27,8 +27,7 @@ class FollowMe : public QGCTool Q_OBJECT public: - FollowMe(QGCApplication* app); - ~FollowMe(); + FollowMe(QGCApplication* app, QGCToolbox* toolbox); public slots: void followMeHandleManager(const QString&); diff --git a/src/GAudioOutput.cc b/src/GAudioOutput.cc index b330e782d..7d380fbeb 100644 --- a/src/GAudioOutput.cc +++ b/src/GAudioOutput.cc @@ -30,8 +30,8 @@ #include #endif -GAudioOutput::GAudioOutput(QGCApplication* app) - : QGCTool(app) +GAudioOutput::GAudioOutput(QGCApplication* app, QGCToolbox* toolbox) + : QGCTool(app, toolbox) #ifndef __android__ , thread(new QThread()) , worker(new QGCAudioWorker()) diff --git a/src/GAudioOutput.h b/src/GAudioOutput.h index 9a1e40f9d..94b32fb65 100644 --- a/src/GAudioOutput.h +++ b/src/GAudioOutput.h @@ -39,7 +39,7 @@ class GAudioOutput : public QGCTool Q_OBJECT public: - GAudioOutput(QGCApplication* app); + GAudioOutput(QGCApplication* app, QGCToolbox* toolbox); ~GAudioOutput(); /** @brief List available voices */ diff --git a/src/Joystick/JoystickManager.cc b/src/Joystick/JoystickManager.cc index 617d414d2..e32d399db 100644 --- a/src/Joystick/JoystickManager.cc +++ b/src/Joystick/JoystickManager.cc @@ -27,8 +27,8 @@ QGC_LOGGING_CATEGORY(JoystickManagerLog, "JoystickManagerLog") const char * JoystickManager::_settingsGroup = "JoystickManager"; const char * JoystickManager::_settingsKeyActiveJoystick = "ActiveJoystick"; -JoystickManager::JoystickManager(QGCApplication* app) - : QGCTool(app) +JoystickManager::JoystickManager(QGCApplication* app, QGCToolbox* toolbox) + : QGCTool(app, toolbox) , _activeJoystick(NULL) , _multiVehicleManager(NULL) { diff --git a/src/Joystick/JoystickManager.h b/src/Joystick/JoystickManager.h index 98a3d09ee..6418886b4 100644 --- a/src/Joystick/JoystickManager.h +++ b/src/Joystick/JoystickManager.h @@ -25,7 +25,7 @@ class JoystickManager : public QGCTool Q_OBJECT public: - JoystickManager(QGCApplication* app); + JoystickManager(QGCApplication* app, QGCToolbox* toolbox); ~JoystickManager(); /// List of available joysticks diff --git a/src/MissionManager/MissionCommandTree.cc b/src/MissionManager/MissionCommandTree.cc index 9e21355af..42254c31e 100644 --- a/src/MissionManager/MissionCommandTree.cc +++ b/src/MissionManager/MissionCommandTree.cc @@ -21,8 +21,8 @@ #include -MissionCommandTree::MissionCommandTree(QGCApplication* app, bool unitTest) - : QGCTool(app) +MissionCommandTree::MissionCommandTree(QGCApplication* app, QGCToolbox* toolbox, bool unitTest) + : QGCTool(app, toolbox) , _allCommandsCategory(tr("All commands")) , _settingsManager(NULL) , _unitTest(unitTest) diff --git a/src/MissionManager/MissionCommandTree.h b/src/MissionManager/MissionCommandTree.h index ea892bd10..13639b2ee 100644 --- a/src/MissionManager/MissionCommandTree.h +++ b/src/MissionManager/MissionCommandTree.h @@ -48,7 +48,7 @@ class MissionCommandTree : public QGCTool Q_OBJECT public: - MissionCommandTree(QGCApplication* app, bool unitTest = false); + MissionCommandTree(QGCApplication* app, QGCToolbox* toolbox, bool unitTest = false); /// Returns the friendly name for the specified command QString friendlyName(MAV_CMD command); diff --git a/src/PositionManager/PositionManager.cpp b/src/PositionManager/PositionManager.cpp index b76258dcc..b9517922a 100644 --- a/src/PositionManager/PositionManager.cpp +++ b/src/PositionManager/PositionManager.cpp @@ -11,10 +11,10 @@ #include "QGCApplication.h" #include "QGCCorePlugin.h" -QGCPositionManager::QGCPositionManager(QGCApplication* app) : - QGCTool(app), - _updateInterval(0), - _currentSource(nullptr) +QGCPositionManager::QGCPositionManager(QGCApplication* app, QGCToolbox* toolbox) + : QGCTool(app, toolbox) + , _updateInterval(0) + , _currentSource(nullptr) { } diff --git a/src/PositionManager/PositionManager.h b/src/PositionManager/PositionManager.h index 334d55b7a..59a8c5e50 100644 --- a/src/PositionManager/PositionManager.h +++ b/src/PositionManager/PositionManager.h @@ -21,7 +21,7 @@ class QGCPositionManager : public QGCTool { public: - QGCPositionManager(QGCApplication* app); + QGCPositionManager(QGCApplication* app, QGCToolbox* toolbox); ~QGCPositionManager(); enum QGCPositionSource { diff --git a/src/QGCApplication.cc b/src/QGCApplication.cc index 7bc96582b..c9d5e2a66 100644 --- a/src/QGCApplication.cc +++ b/src/QGCApplication.cc @@ -133,7 +133,7 @@ static QObject* mavlinkQmlSingletonFactory(QQmlEngine*, QJSEngine*) static QObject* qgroundcontrolQmlGlobalSingletonFactory(QQmlEngine*, QJSEngine*) { // We create this object as a QGCTool even though it isn't in the toolbox - QGroundControlQmlGlobal* qmlGlobal = new QGroundControlQmlGlobal(qgcApp()); + QGroundControlQmlGlobal* qmlGlobal = new QGroundControlQmlGlobal(qgcApp(), qgcApp()->toolbox()); qmlGlobal->setToolbox(qgcApp()->toolbox()); return qmlGlobal; diff --git a/src/QGCToolbox.cc b/src/QGCToolbox.cc index d6371bdf6..92f43eb3a 100644 --- a/src/QGCToolbox.cc +++ b/src/QGCToolbox.cc @@ -29,6 +29,7 @@ #include "QGCCorePlugin.h" #include "QGCOptions.h" #include "SettingsManager.h" +#include "QGCApplication.h" #if defined(QGC_CUSTOM_BUILD) #include CUSTOMHEADER @@ -57,28 +58,28 @@ QGCToolbox::QGCToolbox(QGCApplication* app) , _settingsManager(NULL) { // SettingsManager must be first so settings are available to any subsequent tools - _settingsManager = new SettingsManager(app); + _settingsManager = new SettingsManager(app, this); //-- Scan and load plugins _scanAndLoadPlugins(app); - _audioOutput = new GAudioOutput(app); - _factSystem = new FactSystem(app); - _firmwarePluginManager = new FirmwarePluginManager(app); + _audioOutput = new GAudioOutput (app, this); + _factSystem = new FactSystem (app, this); + _firmwarePluginManager = new FirmwarePluginManager (app, this); #ifndef __mobile__ - _gpsManager = new GPSManager(app); + _gpsManager = new GPSManager (app, this); #endif - _imageProvider = new QGCImageProvider(app); - _joystickManager = new JoystickManager(app); - _linkManager = new LinkManager(app); - _mavlinkProtocol = new MAVLinkProtocol(app); - _missionCommandTree = new MissionCommandTree(app); - _multiVehicleManager = new MultiVehicleManager(app); - _mapEngineManager = new QGCMapEngineManager(app); - _uasMessageHandler = new UASMessageHandler(app); - _qgcPositionManager = new QGCPositionManager(app); - _followMe = new FollowMe(app); - _videoManager = new VideoManager(app); - _mavlinkLogManager = new MAVLinkLogManager(app); + _imageProvider = new QGCImageProvider (app, this); + _joystickManager = new JoystickManager (app, this); + _linkManager = new LinkManager (app, this); + _mavlinkProtocol = new MAVLinkProtocol (app, this); + _missionCommandTree = new MissionCommandTree (app, this); + _multiVehicleManager = new MultiVehicleManager (app, this); + _mapEngineManager = new QGCMapEngineManager (app, this); + _uasMessageHandler = new UASMessageHandler (app, this); + _qgcPositionManager = new QGCPositionManager (app, this); + _followMe = new FollowMe (app, this); + _videoManager = new VideoManager (app, this); + _mavlinkLogManager = new MAVLinkLogManager (app, this); } void QGCToolbox::setChildToolboxes(void) @@ -107,40 +108,21 @@ void QGCToolbox::setChildToolboxes(void) _mavlinkLogManager->setToolbox(this); } -QGCToolbox::~QGCToolbox() -{ - delete _videoManager; - delete _mavlinkLogManager; - delete _audioOutput; - delete _factSystem; - delete _firmwarePluginManager; - delete _joystickManager; - delete _linkManager; - delete _mavlinkProtocol; - delete _missionCommandTree; - delete _mapEngineManager; - delete _multiVehicleManager; - delete _uasMessageHandler; - delete _followMe; - delete _qgcPositionManager; - delete _corePlugin; -} - void QGCToolbox::_scanAndLoadPlugins(QGCApplication* app) { #if defined (QGC_CUSTOM_BUILD) //-- Create custom plugin (Static) - _corePlugin = (QGCCorePlugin*) new CUSTOMCLASS(app); + _corePlugin = (QGCCorePlugin*) new CUSTOMCLASS(app, app->toolbox()); if(_corePlugin) { return; } #endif //-- No plugins found, use default instance - _corePlugin = new QGCCorePlugin(app); + _corePlugin = new QGCCorePlugin(app, app->toolbox()); } -QGCTool::QGCTool(QGCApplication* app) - : QObject((QObject*)app) +QGCTool::QGCTool(QGCApplication* app, QGCToolbox* toolbox) + : QObject(toolbox) , _app(app) , _toolbox(NULL) { diff --git a/src/QGCToolbox.h b/src/QGCToolbox.h index 85d6a6151..fb5c2306a 100644 --- a/src/QGCToolbox.h +++ b/src/QGCToolbox.h @@ -34,11 +34,11 @@ class QGCCorePlugin; class SettingsManager; /// This is used to manage all of our top level services/tools -class QGCToolbox { +class QGCToolbox : public QObject { + Q_OBJECT public: QGCToolbox(QGCApplication* app); - ~QGCToolbox(); FirmwarePluginManager* firmwarePluginManager(void) { return _firmwarePluginManager; } GAudioOutput* audioOutput(void) { return _audioOutput; } @@ -95,11 +95,12 @@ class QGCTool : public QObject { Q_OBJECT public: - // All tools are parented to QGCAppliation and go through a two phase creation. First all tools are newed, - // and then setToolbox is called on all tools. The prevents creating an circular dependencies at constructor - // time. - QGCTool(QGCApplication* app); + // All tools must be parented to the QGCToolbox and go through a two phase creation. In the constructor the toolbox + // should only be passed to QGCTool constructor for correct parenting. It should not be referenced or set in the + // protected member. Then in the second phase of setToolbox calls is where you can reference the toolbox. + QGCTool(QGCApplication* app, QGCToolbox* toolbox); + // If you override this method, you must call the base class. virtual void setToolbox(QGCToolbox* toolbox); protected: diff --git a/src/QmlControls/QGCImageProvider.cc b/src/QmlControls/QGCImageProvider.cc index 48ac0dd7b..0d6ed3b18 100644 --- a/src/QmlControls/QGCImageProvider.cc +++ b/src/QmlControls/QGCImageProvider.cc @@ -22,8 +22,8 @@ #include #include -QGCImageProvider::QGCImageProvider(QGCApplication *app) - : QGCTool(app) +QGCImageProvider::QGCImageProvider(QGCApplication *app, QGCToolbox* toolbox) + : QGCTool(app, toolbox) , QQuickImageProvider(QQmlImageProviderBase::Image) { } diff --git a/src/QmlControls/QGCImageProvider.h b/src/QmlControls/QGCImageProvider.h index 34dcedb3a..e30157beb 100644 --- a/src/QmlControls/QGCImageProvider.h +++ b/src/QmlControls/QGCImageProvider.h @@ -29,7 +29,7 @@ class QGCImageProvider : public QGCTool, public QQuickImageProvider { public: - QGCImageProvider (QGCApplication* app); + QGCImageProvider (QGCApplication* app, QGCToolbox* toolbox); ~QGCImageProvider (); QImage requestImage (const QString & id, QSize * size, const QSize & requestedSize); void setImage (QImage* pImage, int id = 0); diff --git a/src/QmlControls/QGroundControlQmlGlobal.cc b/src/QmlControls/QGroundControlQmlGlobal.cc index 4856844c2..4fbce6a32 100644 --- a/src/QmlControls/QGroundControlQmlGlobal.cc +++ b/src/QmlControls/QGroundControlQmlGlobal.cc @@ -24,8 +24,8 @@ const char* QGroundControlQmlGlobal::_flightMapPositionLatitudeSettingsKey = const char* QGroundControlQmlGlobal::_flightMapPositionLongitudeSettingsKey = "Longitude"; const char* QGroundControlQmlGlobal::_flightMapZoomSettingsKey = "FlightMapZoom"; -QGroundControlQmlGlobal::QGroundControlQmlGlobal(QGCApplication* app) - : QGCTool(app) +QGroundControlQmlGlobal::QGroundControlQmlGlobal(QGCApplication* app, QGCToolbox* toolbox) + : QGCTool(app, toolbox) , _flightMapInitialZoom(14.7) // About 500 meter scale , _linkManager(NULL) , _multiVehicleManager(NULL) diff --git a/src/QmlControls/QGroundControlQmlGlobal.h b/src/QmlControls/QGroundControlQmlGlobal.h index 7890513ca..70f4abd4a 100644 --- a/src/QmlControls/QGroundControlQmlGlobal.h +++ b/src/QmlControls/QGroundControlQmlGlobal.h @@ -34,7 +34,7 @@ class QGroundControlQmlGlobal : public QGCTool Q_OBJECT public: - QGroundControlQmlGlobal(QGCApplication* app); + QGroundControlQmlGlobal(QGCApplication* app, QGCToolbox* toolbox); ~QGroundControlQmlGlobal(); Q_PROPERTY(QString appName READ appName CONSTANT) diff --git a/src/QtLocationPlugin/QMLControl/QGCMapEngineManager.cc b/src/QtLocationPlugin/QMLControl/QGCMapEngineManager.cc index 3ed439fd3..21f0a4692 100644 --- a/src/QtLocationPlugin/QMLControl/QGCMapEngineManager.cc +++ b/src/QtLocationPlugin/QMLControl/QGCMapEngineManager.cc @@ -30,8 +30,8 @@ QGC_LOGGING_CATEGORY(QGCMapEngineManagerLog, "QGCMapEngineManagerLog") static const char* kQmlOfflineMapKeyName = "QGCOfflineMap"; //----------------------------------------------------------------------------- -QGCMapEngineManager::QGCMapEngineManager(QGCApplication* app) - : QGCTool(app) +QGCMapEngineManager::QGCMapEngineManager(QGCApplication* app, QGCToolbox* toolbox) + : QGCTool(app, toolbox) , _topleftLat(0.0) , _topleftLon(0.0) , _bottomRightLat(0.0) diff --git a/src/QtLocationPlugin/QMLControl/QGCMapEngineManager.h b/src/QtLocationPlugin/QMLControl/QGCMapEngineManager.h index 7efe5c6df..a0c640ad8 100644 --- a/src/QtLocationPlugin/QMLControl/QGCMapEngineManager.h +++ b/src/QtLocationPlugin/QMLControl/QGCMapEngineManager.h @@ -26,7 +26,7 @@ class QGCMapEngineManager : public QGCTool { Q_OBJECT public: - QGCMapEngineManager(QGCApplication* app); + QGCMapEngineManager(QGCApplication* app, QGCToolbox* toolbox); ~QGCMapEngineManager(); enum ImportAction { diff --git a/src/Settings/SettingsManager.cc b/src/Settings/SettingsManager.cc index 11f913e8b..6c5c1a4f6 100644 --- a/src/Settings/SettingsManager.cc +++ b/src/Settings/SettingsManager.cc @@ -12,8 +12,8 @@ #include #include -SettingsManager::SettingsManager(QGCApplication* app) - : QGCTool(app) +SettingsManager::SettingsManager(QGCApplication* app, QGCToolbox* toolbox) + : QGCTool(app, toolbox) , _appSettings(NULL) , _unitsSettings(NULL) , _autoConnectSettings(NULL) diff --git a/src/Settings/SettingsManager.h b/src/Settings/SettingsManager.h index ec65d9bd1..c56b61d43 100644 --- a/src/Settings/SettingsManager.h +++ b/src/Settings/SettingsManager.h @@ -28,7 +28,7 @@ class SettingsManager : public QGCTool Q_OBJECT public: - SettingsManager(QGCApplication* app); + SettingsManager(QGCApplication* app, QGCToolbox* toolbox); Q_PROPERTY(QObject* appSettings READ appSettings CONSTANT) Q_PROPERTY(QObject* unitsSettings READ unitsSettings CONSTANT) diff --git a/src/Vehicle/MAVLinkLogManager.cc b/src/Vehicle/MAVLinkLogManager.cc index 8a1a64c37..ca56c1ff1 100644 --- a/src/Vehicle/MAVLinkLogManager.cc +++ b/src/Vehicle/MAVLinkLogManager.cc @@ -295,8 +295,8 @@ MAVLinkLogProcessor::processStreamData(uint16_t sequence, uint8_t first_message, //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- -MAVLinkLogManager::MAVLinkLogManager(QGCApplication* app) - : QGCTool(app) +MAVLinkLogManager::MAVLinkLogManager(QGCApplication* app, QGCToolbox* toolbox) + : QGCTool(app, toolbox) , _enableAutoUpload(true) , _enableAutoStart(false) , _nam(NULL) diff --git a/src/Vehicle/MAVLinkLogManager.h b/src/Vehicle/MAVLinkLogManager.h index a64b8998f..bd511932d 100644 --- a/src/Vehicle/MAVLinkLogManager.h +++ b/src/Vehicle/MAVLinkLogManager.h @@ -106,7 +106,7 @@ class MAVLinkLogManager : public QGCTool Q_OBJECT public: - MAVLinkLogManager (QGCApplication* app); + MAVLinkLogManager (QGCApplication* app, QGCToolbox* toolbox); ~MAVLinkLogManager (); Q_PROPERTY(QString emailAddress READ emailAddress WRITE setEmailAddress NOTIFY emailAddressChanged) diff --git a/src/Vehicle/MultiVehicleManager.cc b/src/Vehicle/MultiVehicleManager.cc index ef4fddeb1..23eb01f2b 100644 --- a/src/Vehicle/MultiVehicleManager.cc +++ b/src/Vehicle/MultiVehicleManager.cc @@ -27,8 +27,8 @@ QGC_LOGGING_CATEGORY(MultiVehicleManagerLog, "MultiVehicleManagerLog") const char* MultiVehicleManager::_gcsHeartbeatEnabledKey = "gcsHeartbeatEnabled"; -MultiVehicleManager::MultiVehicleManager(QGCApplication* app) - : QGCTool(app) +MultiVehicleManager::MultiVehicleManager(QGCApplication* app, QGCToolbox* toolbox) + : QGCTool(app, toolbox) , _activeVehicleAvailable(false) , _parameterReadyVehicleAvailable(false) , _activeVehicle(NULL) diff --git a/src/Vehicle/MultiVehicleManager.h b/src/Vehicle/MultiVehicleManager.h index c8d5e3134..3e209e45c 100644 --- a/src/Vehicle/MultiVehicleManager.h +++ b/src/Vehicle/MultiVehicleManager.h @@ -33,7 +33,7 @@ class MultiVehicleManager : public QGCTool Q_OBJECT public: - MultiVehicleManager(QGCApplication* app); + MultiVehicleManager(QGCApplication* app, QGCToolbox* toolbox); Q_INVOKABLE void saveSetting (const QString &key, const QString& value); Q_INVOKABLE QString loadSetting (const QString &key, const QString& defaultValue); diff --git a/src/api/QGCCorePlugin.cc b/src/api/QGCCorePlugin.cc index d0685823a..1f9bf4e92 100644 --- a/src/api/QGCCorePlugin.cc +++ b/src/api/QGCCorePlugin.cc @@ -79,8 +79,8 @@ QGCCorePlugin::~QGCCorePlugin() } } -QGCCorePlugin::QGCCorePlugin(QGCApplication *app) - : QGCTool(app) +QGCCorePlugin::QGCCorePlugin(QGCApplication *app, QGCToolbox* toolbox) + : QGCTool(app, toolbox) , _showTouchAreas(false) , _showAdvancedUI(true) { diff --git a/src/api/QGCCorePlugin.h b/src/api/QGCCorePlugin.h index 324d7174e..acb5b4f52 100644 --- a/src/api/QGCCorePlugin.h +++ b/src/api/QGCCorePlugin.h @@ -31,7 +31,7 @@ class QGCCorePlugin : public QGCTool { Q_OBJECT public: - QGCCorePlugin(QGCApplication* app); + QGCCorePlugin(QGCApplication* app, QGCToolbox* toolbox); ~QGCCorePlugin(); Q_PROPERTY(QVariantList settingsPages READ settingsPages NOTIFY settingsPagesChanged) diff --git a/src/comm/LinkManager.cc b/src/comm/LinkManager.cc index 29a984811..ff5350a53 100644 --- a/src/comm/LinkManager.cc +++ b/src/comm/LinkManager.cc @@ -42,8 +42,8 @@ const int LinkManager::_autoconnectConnectDelayMSecs = 6000; const int LinkManager::_autoconnectConnectDelayMSecs = 1000; #endif -LinkManager::LinkManager(QGCApplication* app) - : QGCTool(app) +LinkManager::LinkManager(QGCApplication* app, QGCToolbox* toolbox) + : QGCTool(app, toolbox) , _configUpdateSuspended(false) , _configurationsLoaded(false) , _connectionsSuspended(false) diff --git a/src/comm/LinkManager.h b/src/comm/LinkManager.h index 9341b5625..7a44cb0eb 100644 --- a/src/comm/LinkManager.h +++ b/src/comm/LinkManager.h @@ -58,7 +58,7 @@ class LinkManager : public QGCTool friend class LinkManagerTest; public: - LinkManager(QGCApplication* app); + LinkManager(QGCApplication* app, QGCToolbox* toolbox); ~LinkManager(); Q_PROPERTY(bool isBluetoothAvailable READ isBluetoothAvailable CONSTANT) diff --git a/src/comm/MAVLinkProtocol.cc b/src/comm/MAVLinkProtocol.cc index 5067c5e1e..3f195cd1b 100644 --- a/src/comm/MAVLinkProtocol.cc +++ b/src/comm/MAVLinkProtocol.cc @@ -50,8 +50,8 @@ const char* MAVLinkProtocol::_logFileExtension = "mavlink"; ///< Ext * The default constructor will create a new MAVLink object sending heartbeats at * the MAVLINK_HEARTBEAT_DEFAULT_RATE to all connected links. */ -MAVLinkProtocol::MAVLinkProtocol(QGCApplication* app) - : QGCTool(app) +MAVLinkProtocol::MAVLinkProtocol(QGCApplication* app, QGCToolbox* toolbox) + : QGCTool(app, toolbox) , m_enable_version_check(true) , versionMismatchIgnore(false) , systemId(255) diff --git a/src/comm/MAVLinkProtocol.h b/src/comm/MAVLinkProtocol.h index 7890061b6..03026529d 100644 --- a/src/comm/MAVLinkProtocol.h +++ b/src/comm/MAVLinkProtocol.h @@ -43,7 +43,7 @@ class MAVLinkProtocol : public QGCTool Q_OBJECT public: - MAVLinkProtocol(QGCApplication* app); + MAVLinkProtocol(QGCApplication* app, QGCToolbox* toolbox); ~MAVLinkProtocol(); /** @brief Get the human-friendly name of this protocol */ diff --git a/src/uas/UASMessageHandler.cc b/src/uas/UASMessageHandler.cc index 51941c9a6..34f3c41b6 100644 --- a/src/uas/UASMessageHandler.cc +++ b/src/uas/UASMessageHandler.cc @@ -39,8 +39,8 @@ bool UASMessage::severityIsError() } } -UASMessageHandler::UASMessageHandler(QGCApplication* app) - : QGCTool(app) +UASMessageHandler::UASMessageHandler(QGCApplication* app, QGCToolbox* toolbox) + : QGCTool(app, toolbox) , _activeVehicle(NULL) , _activeComponent(-1) , _multiComp(false) diff --git a/src/uas/UASMessageHandler.h b/src/uas/UASMessageHandler.h index 3b039e22e..854a60bc2 100644 --- a/src/uas/UASMessageHandler.h +++ b/src/uas/UASMessageHandler.h @@ -72,7 +72,7 @@ class UASMessageHandler : public QGCTool Q_OBJECT public: - explicit UASMessageHandler(QGCApplication* app); + explicit UASMessageHandler(QGCApplication* app, QGCToolbox* toolbox); ~UASMessageHandler(); /** -- 2.22.0