Planner: don't do unnecessary work on empty dive plans

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2014-05-30 15:40:13 -07:00
parent b791b41db9
commit 65f3135a92
3 changed files with 18 additions and 1 deletions

View file

@ -49,6 +49,20 @@ void dump_plan(struct diveplan *diveplan)
} }
#endif #endif
bool diveplan_empty(struct diveplan *diveplan)
{
struct divedatapoint *dp;
if (!diveplan || !diveplan->dp)
return true;
dp = diveplan->dp;
while(dp) {
if (dp->time)
return false;
dp = dp->next;
}
return true;
}
void set_last_stop(bool last_stop_6m) void set_last_stop(bool last_stop_6m)
{ {
if (last_stop_6m == true) if (last_stop_6m == true)

View file

@ -13,6 +13,7 @@ extern void show_planned_dive(char **error_string_p);
extern void set_last_stop(bool last_stop_6m); extern void set_last_stop(bool last_stop_6m);
extern void get_gas_from_events(struct divecomputer *dc, int time, int *o2, int *he); extern void get_gas_from_events(struct divecomputer *dc, int time, int *o2, int *he);
extern int get_gasidx(struct dive *dive, int o2, int he); extern int get_gasidx(struct dive *dive, int o2, int he);
extern bool diveplan_empty(struct diveplan *diveplan);
extern struct dive *planned_dive; extern struct dive *planned_dive;
extern char *cache_data; extern char *cache_data;

View file

@ -777,6 +777,8 @@ void DivePlannerPointsModel::addDecoToModel()
{ {
struct divedatapoint *dp; struct divedatapoint *dp;
if (diveplan_empty(&diveplan))
return;
bool oldRecalc = plannerModel->setRecalc(false); bool oldRecalc = plannerModel->setRecalc(false);
plannerModel->removeDeco(); plannerModel->removeDeco();
@ -832,7 +834,7 @@ void DivePlannerPointsModel::createTemporaryPlan()
#if DEBUG_PLAN #if DEBUG_PLAN
dump_plan(&diveplan); dump_plan(&diveplan);
#endif #endif
if (plannerModel->recalcQ()) { if (plannerModel->recalcQ() && !diveplan_empty(&diveplan)) {
plan(&diveplan, &cache, &tempDive, stagingDive, isPlanner()); plan(&diveplan, &cache, &tempDive, stagingDive, isPlanner());
addDecoToModel(); addDecoToModel();
if (mode == ADD || mode == PLAN) { if (mode == ADD || mode == PLAN) {