From 62d87e9d25763e81757de417640f464e2bf5a2c0 Mon Sep 17 00:00:00 2001 From: "Robert C. Helling" Date: Mon, 17 Aug 2020 22:04:53 +0200 Subject: Planner: handle zero length segments when replanning When setting up a dive for replanning, we ignored zero length segments as those tend to be generated by gas changes. But it is possible to enter those in the planner and the replanning should not ignore those. So be more clever about gas changes. Let's add 10 seconds so we are not at two depths at the same time and help since add_stop also does not like zero length segments (it thinks we are trying to replace a waypoint). Fixes #2901 Signed-off-by: Robert C. Helling Signed-off-by: Dirk Hohndel --- qt-models/diveplannermodel.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'qt-models') diff --git a/qt-models/diveplannermodel.cpp b/qt-models/diveplannermodel.cpp index ebcbeb51e..bdc79c9e6 100644 --- a/qt-models/diveplannermodel.cpp +++ b/qt-models/diveplannermodel.cpp @@ -128,6 +128,7 @@ void DivePlannerPointsModel::loadFromDive(dive *d) int plansamples = dc->samples <= 100 ? dc->samples : 100; int j = 0; int cylinderid = 0; + last_sp.mbar = 0; for (int i = 0; i < plansamples - 1; i++) { if (dc->last_manual_time.seconds && dc->last_manual_time.seconds > 120 && lasttime.seconds >= dc->last_manual_time.seconds) @@ -145,7 +146,11 @@ void DivePlannerPointsModel::loadFromDive(dive *d) } if (samplecount) { cylinderid = get_cylinderid_at_time(d, dc, lasttime); - if (newtime.seconds - lastrecordedtime.seconds > 10) { + duration_t nexttime = newtime; + ++nexttime.seconds; + if (newtime.seconds - lastrecordedtime.seconds > 10 || cylinderid == get_cylinderid_at_time(d, dc, nexttime)) { + if (newtime.seconds == lastrecordedtime.seconds) + newtime.seconds += 10; current_divemode = get_current_divemode(dc, newtime.seconds - 1, &evd, ¤t_divemode); addStop(depthsum / samplecount, newtime.seconds, cylinderid, last_sp.mbar, true, current_divemode); lastrecordedtime = newtime; -- cgit v1.2.3-70-g09d2