summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2014-08-04 07:36:07 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-08-04 07:36:07 -0700
commit825eb019abf1ee7fb477a43f76da573a60fea188 (patch)
tree0c7b332818b86d26bec86ec71400a4c439d24dd2
parent41953c8c46dda9e652927cc27041977f868bcef5 (diff)
downloadsubsurface-825eb019abf1ee7fb477a43f76da573a60fea188.tar.gz
Planner: show mean depth
Almost invisible, mostly looking like an odd bug in the profile code, there was a tiny red line at depth 0 in the planned profile. Turns out that was the missing mean depth. We didn't populate enough data in the dive computer of the dive we generated from the plan (and the length of the depth line was incorrectly determined by the duration of the dive instead of the duration stored in the dive computer). Fixes #570 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--dive.c2
-rw-r--r--dive.h1
-rw-r--r--planner.c5
-rw-r--r--qt-ui/profile/profilewidget2.cpp2
4 files changed, 7 insertions, 3 deletions
diff --git a/dive.c b/dive.c
index dd847c261..472f8c2dc 100644
--- a/dive.c
+++ b/dive.c
@@ -542,7 +542,7 @@ static void update_temperature(temperature_t *temperature, int new)
*
* This ignores any surface time in the middle of the dive.
*/
-static void fixup_dc_duration(struct divecomputer *dc)
+void fixup_dc_duration(struct divecomputer *dc)
{
int duration, i;
int lasttime, lastdepth, depthtime;
diff --git a/dive.h b/dive.h
index a03dfe141..a1abab657 100644
--- a/dive.h
+++ b/dive.h
@@ -614,6 +614,7 @@ extern bool has_hr_data(struct divecomputer *dc);
extern void sort_table(struct dive_table *table);
extern struct dive *fixup_dive(struct dive *dive);
+extern void fixup_dc_duration(struct divecomputer *dc);
extern int dive_getUniqID(struct dive *d);
extern unsigned int dc_airtemp(struct divecomputer *dc);
extern unsigned int dc_watertemp(struct divecomputer *dc);
diff --git a/planner.c b/planner.c
index 51754de06..5d4570b28 100644
--- a/planner.c
+++ b/planner.c
@@ -924,10 +924,13 @@ void plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool
}
}
- /* We made it to the surface */
+ /* We made it to the surface
+ * Create the final dive, add the plan to the notes and fixup some internal
+ * data that we need to be there when plotting the dive */
plan_add_segment(diveplan, clock - previous_point_time, 0, gas, po2, false);
create_dive_from_plan(diveplan, is_planner);
add_plan_to_notes(diveplan, &displayed_dive, show_disclaimer);
+ fixup_dc_duration(&displayed_dive.dc);
free(stoplevels);
free(gaschanges);
diff --git a/qt-ui/profile/profilewidget2.cpp b/qt-ui/profile/profilewidget2.cpp
index 8f0d1584f..7941ffa31 100644
--- a/qt-ui/profile/profilewidget2.cpp
+++ b/qt-ui/profile/profilewidget2.cpp
@@ -481,7 +481,7 @@ void ProfileWidget2::plotDive(struct dive *d, bool force)
rulerItem->setPlotInfo(pInfo);
meanDepth->setVisible(prefs.show_average_depth);
meanDepth->setMeanDepth(pInfo.meandepth);
- meanDepth->setLine(0, 0, timeAxis->posAtValue(displayed_dive.duration.seconds), 0);
+ meanDepth->setLine(0, 0, timeAxis->posAtValue(currentdc->duration.seconds), 0);
Animations::moveTo(meanDepth,3, profileYAxis->posAtValue(pInfo.meandepth));
dataModel->emitDataChanged();