diff --git a/dive.c b/dive.c index 8c81a3d51..9bac25eee 100644 --- a/dive.c +++ b/dive.c @@ -37,6 +37,8 @@ struct dive *fixup_dive(struct dive *dive) int starttemp = 0, endtemp = 0; int maxdepth = 0, mintemp = 0; int lastdepth = 0; + int lasttemp = 0; + temperature_t *redundant_temp = NULL; for (i = 0; i < dive->samples; i++) { struct sample *sample = dive->sample + i; @@ -60,6 +62,21 @@ struct dive *fixup_dive(struct dive *dive) startpress = press; } if (temp) { + /* + * If we have consecutive identical + * temperature readings, throw away + * the redundant ones. We care about + * the "edges" only. + */ + if (lasttemp == temp) { + if (redundant_temp) + redundant_temp->mkelvin = 0; + redundant_temp = &sample->temperature; + } else { + redundant_temp = NULL; + lasttemp = temp; + } + endtemp = temp; if (!starttemp) starttemp = temp;