diff --git a/src/MissionManager/MissionController.cc b/src/MissionManager/MissionController.cc index 257a2a7231aabf77f8de5b5024e5f13b4be8e0f9..82309fac29f4c0284aa1bdaa1c35d8f9dc42366a 100644 --- a/src/MissionManager/MissionController.cc +++ b/src/MissionManager/MissionController.cc @@ -1110,9 +1110,14 @@ void MissionController::_recalcWaypointLines(void) qCDebug(MissionControllerLog) << "_recalcWaypointLines homePositionValid" << homePositionValid; CoordVectHashTable old_table = _linesTable; + _linesTable.clear(); - _waypointLines.clear(); _waypointPath.clear(); + + _waypointLines.beginReset(); + _directionArrows.beginReset(); + + _waypointLines.clear(); _directionArrows.clear(); bool linkEndToHome; @@ -1150,7 +1155,10 @@ void MissionController::_recalcWaypointLines(void) lastSegmentVisualItemPair = VisualItemPair(lastCoordinateItem, item); if (!_flyView || addDirectionArrow) { - _directionArrows.append(_addWaypointLineSegment(old_table, lastSegmentVisualItemPair)); + CoordinateVector* coordVector = _addWaypointLineSegment(old_table, lastSegmentVisualItemPair); + if (addDirectionArrow) { + _directionArrows.append(coordVector); + } } } firstCoordinateItem = false; @@ -1205,6 +1213,9 @@ void MissionController::_recalcWaypointLines(void) _waypointLines.swapObjectList(objs); } + _waypointLines.endReset(); + _directionArrows.endReset(); + // Anything left in the old table is an obsolete line object that can go qDeleteAll(old_table); @@ -1219,6 +1230,7 @@ void MissionController::_recalcWaypointLines(void) } emit waypointLinesChanged(); + emit directionArrowsChanged(); emit waypointPathChanged(); } diff --git a/src/MissionManager/MissionController.h b/src/MissionManager/MissionController.h index 16d2c549cfcff22eb98b6f6443b4e999d0695ad0..cdb517262e0aae34f5ac96efb39889bf6e990ab6 100644 --- a/src/MissionManager/MissionController.h +++ b/src/MissionManager/MissionController.h @@ -70,7 +70,7 @@ public: Q_PROPERTY(QmlObjectListModel* visualItems READ visualItems NOTIFY visualItemsChanged) Q_PROPERTY(QmlObjectListModel* waypointLines READ waypointLines NOTIFY waypointLinesChanged) ///< Used by Plan view only for interactive editing Q_PROPERTY(QVariantList waypointPath READ waypointPath NOTIFY waypointPathChanged) ///< Used by Fly view only for static display - Q_PROPERTY(QmlObjectListModel* directionArrows READ directionArrows CONSTANT) + Q_PROPERTY(QmlObjectListModel* directionArrows READ directionArrows NOTIFY directionArrowsChanged) Q_PROPERTY(QStringList complexMissionItemNames READ complexMissionItemNames NOTIFY complexMissionItemNamesChanged) Q_PROPERTY(QGeoCoordinate plannedHomePosition READ plannedHomePosition NOTIFY plannedHomePositionChanged) @@ -207,6 +207,7 @@ public: signals: void visualItemsChanged (void); void waypointLinesChanged (void); + void directionArrowsChanged (void); void waypointPathChanged (void); void newItemsFromVehicle (void); void missionDistanceChanged (double missionDistance);