summaryrefslogtreecommitdiffstats
path: root/qt-ui/profile
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2014-06-04 13:41:50 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-06-04 13:44:34 -0700
commit714fdc7ced770c16126fadec2b0bf314e9b4a622 (patch)
treee3bc4f77f6964e530307ef04e7997f001a59f545 /qt-ui/profile
parentf34e6218a03dd91e831a240da3debb7d861e8603 (diff)
downloadsubsurface-714fdc7ced770c16126fadec2b0bf314e9b4a622.tar.gz
Force TTS/NDL calculation off if things take too long
This is kind of a random cut off, but if plotting the dive takes more than a second and TTS/NDL is on, we force it off. Because the algorithm for that is fundamentally quadratic in nature it can take a VERY long time - getting users to think something is broken. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui/profile')
-rw-r--r--qt-ui/profile/profilewidget2.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/qt-ui/profile/profilewidget2.cpp b/qt-ui/profile/profilewidget2.cpp
index 67b0c4b9f..92c368cb8 100644
--- a/qt-ui/profile/profilewidget2.cpp
+++ b/qt-ui/profile/profilewidget2.cpp
@@ -355,6 +355,8 @@ void ProfileWidget2::setupSceneAndFlags()
void ProfileWidget2::plotDives(QList<dive *> dives)
{
static bool firstCall = true;
+ QTime measureDuration; // let's measure how long this takes us (maybe we'll turn of TTL calculation later
+ measureDuration.start();
// I Know that it's a list, but currently we are
// using just the first.
@@ -517,6 +519,12 @@ void ProfileWidget2::plotDives(QList<dive *> dives)
DivePlannerPointsModel *model = DivePlannerPointsModel::instance();
model->deleteTemporaryPlan();
}
+ // OK, how long did this take us? Anything above the second is way too long,
+ // so if we are calculation TTS / NDL then let's force that off.
+ if (measureDuration.elapsed() > 1000 && prefs.calcndltts) {
+ MainWindow::instance()->turnOffNdlTts();
+ MainWindow::instance()->showError("Show NDL / TTS was disabled because of excessive processing time");
+ }
}
void ProfileWidget2::settingsChanged()