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)
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();
}
......
......@@ -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);
......
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