Commit 3b5b73d5 authored by Don Gagne's avatar Don Gagne

Use QmlObjectListModel::begin/endReset to keep Qt from blowing it's brains out with too many updates
parent 3ffb3646
...@@ -1110,9 +1110,14 @@ void MissionController::_recalcWaypointLines(void) ...@@ -1110,9 +1110,14 @@ void MissionController::_recalcWaypointLines(void)
qCDebug(MissionControllerLog) << "_recalcWaypointLines homePositionValid" << homePositionValid; qCDebug(MissionControllerLog) << "_recalcWaypointLines homePositionValid" << homePositionValid;
CoordVectHashTable old_table = _linesTable; CoordVectHashTable old_table = _linesTable;
_linesTable.clear(); _linesTable.clear();
_waypointLines.clear();
_waypointPath.clear(); _waypointPath.clear();
_waypointLines.beginReset();
_directionArrows.beginReset();
_waypointLines.clear();
_directionArrows.clear(); _directionArrows.clear();
bool linkEndToHome; bool linkEndToHome;
...@@ -1150,7 +1155,10 @@ void MissionController::_recalcWaypointLines(void) ...@@ -1150,7 +1155,10 @@ void MissionController::_recalcWaypointLines(void)
lastSegmentVisualItemPair = VisualItemPair(lastCoordinateItem, item); lastSegmentVisualItemPair = VisualItemPair(lastCoordinateItem, item);
if (!_flyView || addDirectionArrow) { if (!_flyView || addDirectionArrow) {
_directionArrows.append(_addWaypointLineSegment(old_table, lastSegmentVisualItemPair)); CoordinateVector* coordVector = _addWaypointLineSegment(old_table, lastSegmentVisualItemPair);
if (addDirectionArrow) {
_directionArrows.append(coordVector);
}
} }
} }
firstCoordinateItem = false; firstCoordinateItem = false;
...@@ -1205,6 +1213,9 @@ void MissionController::_recalcWaypointLines(void) ...@@ -1205,6 +1213,9 @@ void MissionController::_recalcWaypointLines(void)
_waypointLines.swapObjectList(objs); _waypointLines.swapObjectList(objs);
} }
_waypointLines.endReset();
_directionArrows.endReset();
// Anything left in the old table is an obsolete line object that can go // Anything left in the old table is an obsolete line object that can go
qDeleteAll(old_table); qDeleteAll(old_table);
...@@ -1219,6 +1230,7 @@ void MissionController::_recalcWaypointLines(void) ...@@ -1219,6 +1230,7 @@ void MissionController::_recalcWaypointLines(void)
} }
emit waypointLinesChanged(); emit waypointLinesChanged();
emit directionArrowsChanged();
emit waypointPathChanged(); emit waypointPathChanged();
} }
......
...@@ -70,7 +70,7 @@ public: ...@@ -70,7 +70,7 @@ public:
Q_PROPERTY(QmlObjectListModel* visualItems READ visualItems NOTIFY visualItemsChanged) 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(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(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(QStringList complexMissionItemNames READ complexMissionItemNames NOTIFY complexMissionItemNamesChanged)
Q_PROPERTY(QGeoCoordinate plannedHomePosition READ plannedHomePosition NOTIFY plannedHomePositionChanged) Q_PROPERTY(QGeoCoordinate plannedHomePosition READ plannedHomePosition NOTIFY plannedHomePositionChanged)
...@@ -207,6 +207,7 @@ public: ...@@ -207,6 +207,7 @@ public:
signals: signals:
void visualItemsChanged (void); void visualItemsChanged (void);
void waypointLinesChanged (void); void waypointLinesChanged (void);
void directionArrowsChanged (void);
void waypointPathChanged (void); void waypointPathChanged (void);
void newItemsFromVehicle (void); void newItemsFromVehicle (void);
void missionDistanceChanged (double missionDistance); void missionDistanceChanged (double missionDistance);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment