summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Robert C. Helling <helling@atdotde.de>2018-06-17 23:21:53 +0200
committerGravatar Robert C. Helling <helling@atdotde.de>2018-06-24 09:35:55 +0200
commit8406cbf1876658dc11f41784c3336908b3dc49a7 (patch)
treef5b8cf3920d81a479ffde6ac045a3ec37f74a6ac
parent4157365c9650007dad231143d67d559ab885b31d (diff)
downloadsubsurface-8406cbf1876658dc11f41784c3336908b3dc49a7.tar.gz
Fix interpretation of dive mode changes upon replan
... by taking into acount that dive planner points refer to the sement before the waypoint (while change mode events are concerned with the future of a waypoint). Signed-off-by: Robert C. Helling <helling@atdotde.de>
-rw-r--r--core/planner.c2
-rw-r--r--qt-models/diveplannermodel.cpp5
2 files changed, 3 insertions, 4 deletions
diff --git a/core/planner.c b/core/planner.c
index cc6874c3f..3821890e3 100644
--- a/core/planner.c
+++ b/core/planner.c
@@ -303,8 +303,6 @@ static void create_dive_from_plan(struct diveplan *diveplan, struct dive *dive,
lastcylid = 0;
while (dp) {
int po2 = dp->setpoint;
- if (dp->setpoint)
- type = CCR;
int time = dp->time;
depth_t depth = dp->depth;
diff --git a/qt-models/diveplannermodel.cpp b/qt-models/diveplannermodel.cpp
index f14eb7ce2..435571e46 100644
--- a/qt-models/diveplannermodel.cpp
+++ b/qt-models/diveplannermodel.cpp
@@ -115,9 +115,10 @@ void DivePlannerPointsModel::loadFromDive(dive *d)
break;
while (j * plansamples <= i * dc->samples) {
const sample &s = dc->sample[j];
+ const sample &prev = dc->sample[j-1];
if (s.time.seconds != 0 && (!hasMarkedSamples || s.manually_entered)) {
depthsum += s.depth.mm;
- last_sp = s.setpoint;
+ last_sp = prev.setpoint;
++samplecount;
newtime = s.time;
}
@@ -126,7 +127,7 @@ void DivePlannerPointsModel::loadFromDive(dive *d)
if (samplecount) {
cylinderid = get_cylinderid_at_time(d, dc, lasttime);
if (newtime.seconds - lastrecordedtime.seconds > 10) {
- current_divemode = get_current_divemode(dc, newtime.seconds + 1, &evd, &current_divemode);
+ current_divemode = get_current_divemode(dc, newtime.seconds - 1, &evd, &current_divemode);
addStop(depthsum / samplecount, newtime.seconds, cylinderid, last_sp.mbar, true, current_divemode);
lastrecordedtime = newtime;
}