summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Robert C. Helling <helling@atdotde.de>2019-10-30 15:01:54 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2019-11-03 04:05:29 -0800
commita3a3913e1e8955da0dd65011b4c5e67803e2c4da (patch)
tree9cf1117f45b6e779e54bffa9d9604496c88148a7
parentf1e7adfedcbbd7b39ea5763efaf30d61453e902c (diff)
downloadsubsurface-a3a3913e1e8955da0dd65011b4c5e67803e2c4da.tar.gz
Planner: Don't accumulate rounding errors in stop durations
When displaying segment or stop times in the planner notes, we always round to the next full minute. This can mean for example that we round down more often than rounding up with the result that the sum of the segment times does not match the total runtime and can for example lead to stops that are shown with 0min duration. With this patch, we increase the reference time of the last display only by the duration time actually shown. This way, the rounding errors don't accumulate but having rounded down previously makes rounding up the next time more propable. Signed-off-by: Robert C. Helling <helling@atdotde.de>
-rw-r--r--CHANGELOG.md1
-rw-r--r--core/plannernotes.c3
2 files changed, 3 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 42f8d88dc..5c62cca4a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,5 @@
Planner: Add checkbox on considering oxygen narcotic
+Planner: Improve rounding of stop durations in planner notes
Desktop: register changes when clicking "done" on dive-site edit screen
Mobile: re-enable GPS location service icon in global drawer
Mobile: add support for editing the dive number of a dive
diff --git a/core/plannernotes.c b/core/plannernotes.c
index c72ac901a..0bfdbe7d5 100644
--- a/core/plannernotes.c
+++ b/core/plannernotes.c
@@ -375,7 +375,8 @@ void add_plan_to_notes(struct diveplan *diveplan, struct dive *dive, bool show_d
}
put_string(&buf, "</tr>\n");
newdepth = dp->depth.mm;
- lasttime = dp->time;
+ // Only add the time we actually displayed so rounding errors dont accumulate
+ lasttime += ((dp->time - lasttime + 30) / 60) * 60;
}
}
if (gaschange_after || gaschange_before) {