aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dive.h2
-rw-r--r--planner.c12
-rw-r--r--qt-ui/diveplanner.cpp5
3 files changed, 12 insertions, 7 deletions
diff --git a/dive.h b/dive.h
index 625f650aa..9a26892e6 100644
--- a/dive.h
+++ b/dive.h
@@ -819,7 +819,7 @@ struct divedatapoint *create_dp(int time_incr, int depth, struct gasmix gasmix,
#if DEBUG_PLAN
void dump_plan(struct diveplan *diveplan);
#endif
-int plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool show_disclaimer);
+bool plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool show_disclaimer);
void delete_single_dive(int idx);
struct event *get_next_event(struct event *event, const char *name);
diff --git a/planner.c b/planner.c
index af1db5079..ed7687ec9 100644
--- a/planner.c
+++ b/planner.c
@@ -853,7 +853,9 @@ bool enough_gas(int current_cylinder)
return true;
}
-int plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool show_disclaimer)
+// Work out the stops. Return value is if there were any mandatory stops.
+
+bool plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool show_disclaimer)
{
struct sample *sample;
int po2;
@@ -876,6 +878,7 @@ int plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool s
int breaktime = -1;
int breakcylinder = 0;
int error = 0;
+ bool decodive = false;
set_gf(diveplan->gflow, diveplan->gfhigh, prefs.gf_low_at_maxdepth);
if (!diveplan->surface_pressure)
@@ -912,7 +915,7 @@ int plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool s
transitiontime = depth / 75; /* this still needs to be made configurable */
plan_add_segment(diveplan, transitiontime, 0, gas, po2, false);
create_dive_from_plan(diveplan, is_planner);
- return(error);
+ return(false);
}
tissue_tolerance = tissue_at_end(&displayed_dive, cached_datap);
@@ -992,7 +995,7 @@ int plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool s
free(stoplevels);
free(gaschanges);
- return(error);
+ return(false);
}
if (best_first_ascend_cylinder != current_cylinder) {
@@ -1056,6 +1059,7 @@ int plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool s
break; /* We did not hit the ceiling */
/* Add a minute of deco time and then try again */
+ decodive = true;
if (!stopping) {
/* The last segment was an ascend segment.
* Add a waypoint for start of this deco stop */
@@ -1116,7 +1120,7 @@ int plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool s
free(stoplevels);
free(gaschanges);
- return error;
+ return decodive;
}
/*
diff --git a/qt-ui/diveplanner.cpp b/qt-ui/diveplanner.cpp
index aacca8e8f..a5fc512cb 100644
--- a/qt-ui/diveplanner.cpp
+++ b/qt-ui/diveplanner.cpp
@@ -1310,7 +1310,7 @@ void DivePlannerPointsModel::createPlan(bool replanCopy)
plannerModel->setRecalc(oldRecalc);
//TODO: C-based function here?
- plan(&diveplan, &cache, isPlanner(), true);
+ bool did_deco = plan(&diveplan, &cache, isPlanner(), true);
if (!current_dive || displayed_dive.id != current_dive->id) {
// we were planning a new dive, not re-planning an existing on
record_dive(clone_dive(&displayed_dive));
@@ -1331,7 +1331,8 @@ void DivePlannerPointsModel::createPlan(bool replanCopy)
QString oldnotes(current_dive->notes);
if (oldnotes.indexOf(QString(disclaimer)) >= 0)
oldnotes.truncate(oldnotes.indexOf(QString(disclaimer)));
- oldnotes.append(displayed_dive.notes);
+ if (did_deco)
+ oldnotes.append(displayed_dive.notes);
displayed_dive.notes = strdup(oldnotes.toUtf8().data());
}
copy_dive(&displayed_dive, current_dive);