aboutsummaryrefslogtreecommitdiffstats
path: root/qt-models
diff options
context:
space:
mode:
authorGravatar Robert C. Helling <helling@atdotde.de>2017-11-28 20:23:47 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2017-12-01 15:47:51 -0800
commit0839342d335bef8312845d0c57a81d08a13f657c (patch)
tree4b5f3fc777541a08b20a784e1e6dfacba0ba38f0 /qt-models
parentf6b00fb3dda5529775c6044554da4d9f1a328047 (diff)
downloadsubsurface-0839342d335bef8312845d0c57a81d08a13f657c.tar.gz
Don't block profile updates in variations computation
We needed to prevent updates when we messed with the diveplannerpointsmodel as those would trigger starting planning from scratch causing infinite loops. Now, the variations calculation operates on a copy of the diveplan, so the model is no longer involved and we should not block recalculations (as those might be triggered by the UI). Signed-off-by: Robert C. Helling <helling@atdotde.de>
Diffstat (limited to 'qt-models')
-rw-r--r--qt-models/diveplannermodel.cpp18
1 files changed, 9 insertions, 9 deletions
diff --git a/qt-models/diveplannermodel.cpp b/qt-models/diveplannermodel.cpp
index 2d03a672b..f549a0378 100644
--- a/qt-models/diveplannermodel.cpp
+++ b/qt-models/diveplannermodel.cpp
@@ -1022,7 +1022,7 @@ int DivePlannerPointsModel::analyzeVariations(struct decostop *min, struct decos
void DivePlannerPointsModel::computeVariations(struct diveplan *original_plan, struct deco_state *previos_ds)
{
- bool oldRecalc = setRecalc(false);
+// bool oldRecalc = setRecalc(false);
struct dive *dive = alloc_dive();
copy_dive(&displayed_dive, dive);
struct decostop original[60], deeper[60], shallower[60], shorter[60], longer[60];
@@ -1032,7 +1032,7 @@ void DivePlannerPointsModel::computeVariations(struct diveplan *original_plan, s
struct deco_state ds = *previos_ds;
if(!original_plan) {
- setRecalc(oldRecalc);
+// setRecalc(oldRecalc);
return;
}
@@ -1083,19 +1083,19 @@ void DivePlannerPointsModel::computeVariations(struct diveplan *original_plan, s
plan(&ds, &plan_copy, dive, 1, shorter, &cache, true, false);
free_dps(&plan_copy);
restore_deco_state(save, &ds, false);
-finish:
- free_dps(original_plan);
- free(original_plan);
-#ifdef SHOWSTOPVARIATIONS
- printf("\n\n");
-#endif
char buf[200];
sprintf(buf, "+ %d:%02d /m + %d:%02d /min", FRACTION(analyzeVariations(shallower, original, deeper, "m"),60),
FRACTION(analyzeVariations(shorter, original, longer, "min"), 60));
emit variationsComputed(QString(buf));
+#ifdef SHOWSTOPVARIATIONS
+ printf("\n\n");
+#endif
}
- setRecalc(oldRecalc);
+finish:
+ free_dps(original_plan);
+ free(original_plan);
+// setRecalc(oldRecalc);
}
void DivePlannerPointsModel::createPlan(bool replanCopy)