diff options
author | Robert C. Helling <helling@atdotde.de> | 2017-10-19 15:29:59 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2017-10-19 14:57:02 -0400 |
commit | a422957cd6525b9753cafacfafdf1f3eef66870d (patch) | |
tree | f29ace3e6f2681c71901d061aab6035b8505629f | |
parent | a9b692f0c30fecf950c52099d7c0f336f88c901f (diff) | |
download | subsurface-a422957cd6525b9753cafacfafdf1f3eef66870d.tar.gz |
Use displayed_dc instead of current_dc
current_dc is a macro that determines the dive computer
based on the current dive number. When the planner is started
from an emtpy dive list, the dive number ends up being -1 and
that doesn't produce a valid dive computer. Use the divecomputer
of the displayed_dive instead. This is done via a macro that
can also be used in two other places. Without this patch, the
planner crashed when called on an empty dive list.
Signed-off-by: Robert C. Helling <helling@atdotde.de>
-rw-r--r-- | core/dive.h | 1 | ||||
-rw-r--r-- | desktop-widgets/mainwindow.cpp | 1 | ||||
-rw-r--r-- | desktop-widgets/tab-widgets/maintab.cpp | 2 | ||||
-rw-r--r-- | profile-widget/diveprofileitem.cpp | 2 |
4 files changed, 3 insertions, 3 deletions
diff --git a/core/dive.h b/core/dive.h index 8e862f691..b02ce5f6c 100644 --- a/core/dive.h +++ b/core/dive.h @@ -549,6 +549,7 @@ extern int selected_dive; extern unsigned int dc_number; #define current_dive (get_dive(selected_dive)) #define current_dc (get_dive_dc(current_dive, dc_number)) +#define displayed_dc (get_dive_dc(&displayed_dive, dc_number)) static inline struct dive *get_dive(int nr) { diff --git a/desktop-widgets/mainwindow.cpp b/desktop-widgets/mainwindow.cpp index 44384bfb7..1445ea93b 100644 --- a/desktop-widgets/mainwindow.cpp +++ b/desktop-widgets/mainwindow.cpp @@ -909,6 +909,7 @@ void MainWindow::setupForAddAndPlan(const char *model) displayed_dive.id = dive_getUniqID(&displayed_dive); displayed_dive.when = QDateTime::currentMSecsSinceEpoch() / 1000L + gettimezoneoffset() + 3600; displayed_dive.dc.model = strdup(model); // don't translate! this is stored in the XML file + dc_number = 1; // setup the dive cylinders DivePlannerPointsModel::instance()->clear(); DivePlannerPointsModel::instance()->setupCylinders(); diff --git a/desktop-widgets/tab-widgets/maintab.cpp b/desktop-widgets/tab-widgets/maintab.cpp index c2a0c7e81..2202b96d3 100644 --- a/desktop-widgets/tab-widgets/maintab.cpp +++ b/desktop-widgets/tab-widgets/maintab.cpp @@ -798,7 +798,6 @@ void MainTab::acceptChanges() addedId = displayed_dive.id; } struct dive *cd = current_dive; - struct divecomputer *displayed_dc = get_dive_dc(&displayed_dive, dc_number); // now check if something has changed and if yes, edit the selected dives that // were identical with the master dive shown (and mark the divelist as changed) if (!same_string(displayed_dive.suit, cd->suit)) @@ -1145,7 +1144,6 @@ void MainTab::divetype_Changed(int index) { if (editMode == IGNORE) return; - struct divecomputer *displayed_dc = get_dive_dc(&displayed_dive, dc_number); displayed_dc->divemode = (enum dive_comp_type) index; update_setpoint_events(&displayed_dive, displayed_dc); markChangedWidget(ui.DiveType); diff --git a/profile-widget/diveprofileitem.cpp b/profile-widget/diveprofileitem.cpp index 1cd8fae4f..4c3db45f3 100644 --- a/profile-widget/diveprofileitem.cpp +++ b/profile-widget/diveprofileitem.cpp @@ -428,7 +428,7 @@ void DivePercentageItem::paint(QPainter *painter, const QStyleOptionGraphicsItem struct gasmix *gasmix = NULL; struct event *ev = NULL; int sec = dataModel->index(i, DivePlotDataModel::TIME).data().toInt(); - gasmix = get_gasmix(&displayed_dive, current_dc, sec, &ev, gasmix); + gasmix = get_gasmix(&displayed_dive, displayed_dc, sec, &ev, gasmix); int inert = 1000 - get_o2(gasmix); mypen.setBrush(QBrush(ColorScale(value, inert))); painter->setPen(mypen); |