aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--profile.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/profile.c b/profile.c
index 032bbd2c5..107f80bb5 100644
--- a/profile.c
+++ b/profile.c
@@ -127,7 +127,7 @@ static int get_cylinder_pressure_range(struct dive *dive, double *scalex, double
static void plot_cylinder_pressure(struct dive *dive, cairo_t *cr,
double topx, double topy, double maxx, double maxy)
{
- int i;
+ int i, sec = -1;
double scalex, scaley;
if (!get_cylinder_pressure_range(dive, &scalex, &scaley))
@@ -137,16 +137,21 @@ static void plot_cylinder_pressure(struct dive *dive, cairo_t *cr,
cairo_move_to(cr, SCALE(0, dive->cylinder[0].start.mbar));
for (i = 1; i < dive->samples; i++) {
- int sec, mbar;
+ int mbar;
struct sample *sample = dive->sample + i;
- sec = sample->time.seconds;
mbar = sample->cylinderpressure.mbar;
if (!mbar)
continue;
+ sec = sample->time.seconds;
cairo_line_to(cr, SCALE(sec, mbar));
}
- cairo_line_to(cr, SCALE(dive->duration.seconds, dive->cylinder[0].end.mbar));
+ /*
+ * We may have "surface time" events, in which case we don't go
+ * back to dive duration
+ */
+ if (sec < dive->duration.seconds)
+ cairo_line_to(cr, SCALE(dive->duration.seconds, dive->cylinder[0].end.mbar));
cairo_stroke(cr);
}