summaryrefslogtreecommitdiffstats
path: root/core/statistics.c
diff options
context:
space:
mode:
authorGravatar Robert C. Helling <helling@atdotde.de>2016-11-10 10:15:11 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2016-11-15 03:25:46 -0800
commit20e211d33790463d75f254612d6b7be50c8d1a00 (patch)
tree9adb6608dd171595b4e6a4b94ef5a2f67b73bf72 /core/statistics.c
parent2d69f8c9d09af18355c37e90eb970c5b33936d59 (diff)
downloadsubsurface-20e211d33790463d75f254612d6b7be50c8d1a00.tar.gz
Only consider non-zero average depth for statistics
Upon importing dives, the average depth can be undefined which we store as 0. This zero should not contribute when computing the average depth for the (yearly) statistics, only dives with average depth set now contribute. Signed-off-by: Robert C. Helling <helling@atdotde.de> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'core/statistics.c')
-rw-r--r--core/statistics.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/core/statistics.c b/core/statistics.c
index 1b9865443..62a4d737f 100644
--- a/core/statistics.c
+++ b/core/statistics.c
@@ -47,10 +47,10 @@ static void process_temperatures(struct dive *dp, stats_t *stats)
static void process_dive(struct dive *dp, stats_t *stats)
{
- int old_tt, sac_time = 0;
+ int old_tadt, sac_time = 0;
uint32_t duration = dp->duration.seconds;
- old_tt = stats->total_time.seconds;
+ old_tadt = stats->total_average_depth_time.seconds;
stats->total_time.seconds += duration;
if (duration > stats->longest_time.seconds)
stats->longest_time.seconds = duration;
@@ -66,9 +66,12 @@ static void process_dive(struct dive *dp, stats_t *stats)
/* Maybe we should drop zero-duration dives */
if (!duration)
return;
- stats->avg_depth.mm = (1.0 * old_tt * stats->avg_depth.mm +
- duration * dp->meandepth.mm) /
- stats->total_time.seconds;
+ if (dp->meandepth.mm) {
+ stats->total_average_depth_time.seconds += duration;
+ stats->avg_depth.mm = (1.0 * old_tadt * stats->avg_depth.mm +
+ duration * dp->meandepth.mm) /
+ stats->total_average_depth_time.seconds;
+ }
if (dp->sac > 100) { /* less than .1 l/min is bogus, even with a pSCR */
sac_time = stats->total_sac_time + duration;
stats->avg_sac.mliter = (1.0 * stats->total_sac_time * stats->avg_sac.mliter +