Browse Source

Fix incorrect usage of _settingsItem causing crashes

QGC4.4
DonLakeFlyer 6 years ago
parent
commit
64afd5ae6a
  1. 15
      src/MissionManager/MissionController.cc

15
src/MissionManager/MissionController.cc

@ -181,7 +181,7 @@ void MissionController::_newMissionItemsAvailableFromVehicle(bool removeAllReque @@ -181,7 +181,7 @@ void MissionController::_newMissionItemsAvailableFromVehicle(bool removeAllReque
// First item is fake home position
MissionItem* fakeHomeItem = newMissionItems[0];
if (fakeHomeItem->coordinate().latitude() != 0 || fakeHomeItem->coordinate().longitude() != 0) {
_settingsItem->setInitialHomePosition(fakeHomeItem->coordinate());
settingsItem->setInitialHomePosition(fakeHomeItem->coordinate());
}
i = 1;
}
@ -687,7 +687,7 @@ bool MissionController::_loadJsonMissionFileV1(const QJsonObject& json, QmlObjec @@ -687,7 +687,7 @@ bool MissionController::_loadJsonMissionFileV1(const QJsonObject& json, QmlObjec
if (item->load(itemObject, itemObject["id"].toInt(), errorString)) {
if (TakeoffMissionItem::isTakeoffCommand(item->mavCommand())) {
// This needs to be a TakeoffMissionItem
TakeoffMissionItem* takeoffItem = new TakeoffMissionItem(_controllerVehicle, _flyView, _settingsItem, visualItems);
TakeoffMissionItem* takeoffItem = new TakeoffMissionItem(_controllerVehicle, _flyView, settingsItem, visualItems);
takeoffItem->load(itemObject, itemObject["id"].toInt(), errorString);
item->deleteLater();
item = takeoffItem;
@ -742,9 +742,9 @@ bool MissionController::_loadJsonMissionFileV2(const QJsonObject& json, QmlObjec @@ -742,9 +742,9 @@ bool MissionController::_loadJsonMissionFileV2(const QJsonObject& json, QmlObjec
if (!JsonHelper::loadGeoCoordinate(json[_jsonPlannedHomePositionKey], true /* altitudeRequired */, homeCoordinate, errorString)) {
return false;
}
_settingsItem = new MissionSettingsItem(_controllerVehicle, _flyView, visualItems);
_settingsItem->setCoordinate(homeCoordinate);
visualItems->insert(0, _settingsItem);
MissionSettingsItem* settingsItem = new MissionSettingsItem(_controllerVehicle, _flyView, visualItems);
settingsItem->setCoordinate(homeCoordinate);
visualItems->insert(0, settingsItem);
qCDebug(MissionControllerLog) << "plannedHomePosition" << homeCoordinate;
// Read mission items
@ -775,7 +775,7 @@ bool MissionController::_loadJsonMissionFileV2(const QJsonObject& json, QmlObjec @@ -775,7 +775,7 @@ bool MissionController::_loadJsonMissionFileV2(const QJsonObject& json, QmlObjec
if (simpleItem->load(itemObject, nextSequenceNumber, errorString)) {
if (TakeoffMissionItem::isTakeoffCommand(static_cast<MAV_CMD>(simpleItem->command()))) {
// This needs to be a TakeoffMissionItem
TakeoffMissionItem* takeoffItem = new TakeoffMissionItem(_controllerVehicle, _flyView, _settingsItem, this);
TakeoffMissionItem* takeoffItem = new TakeoffMissionItem(_controllerVehicle, _flyView, settingsItem, this);
takeoffItem->load(itemObject, nextSequenceNumber, errorString);
simpleItem->deleteLater();
simpleItem = takeoffItem;
@ -918,7 +918,7 @@ bool MissionController::_loadTextMissionFile(QTextStream& stream, QmlObjectListM @@ -918,7 +918,7 @@ bool MissionController::_loadTextMissionFile(QTextStream& stream, QmlObjectListM
SimpleMissionItem* item = new SimpleMissionItem(_controllerVehicle, _flyView, visualItems);
if (item->load(stream)) {
if (firstItem && plannedHomePositionInFile) {
_settingsItem->setInitialHomePositionFromUser(item->coordinate());
settingsItem->setInitialHomePositionFromUser(item->coordinate());
} else {
if (TakeoffMissionItem::isTakeoffCommand(static_cast<MAV_CMD>(item->command()))) {
// This needs to be a TakeoffMissionItem
@ -1701,7 +1701,6 @@ void MissionController::_initAllVisualItems(void) @@ -1701,7 +1701,6 @@ void MissionController::_initAllVisualItems(void)
// Setup home position at index 0
if (!_settingsItem) {
qWarning() << "_initAllVisualItems _settingsItem should already be set";
_settingsItem = qobject_cast<MissionSettingsItem*>(_visualItems->get(0));
if (!_settingsItem) {
qWarning() << "First item not MissionSettingsItem";

Loading…
Cancel
Save