mirror of
https://github.com/subsurface/subsurface.git
synced 2025-01-31 20:33:24 +00:00
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>
This commit is contained in:
parent
a9b692f0c3
commit
a422957cd6
4 changed files with 3 additions and 3 deletions
|
@ -549,6 +549,7 @@ extern int selected_dive;
|
||||||
extern unsigned int dc_number;
|
extern unsigned int dc_number;
|
||||||
#define current_dive (get_dive(selected_dive))
|
#define current_dive (get_dive(selected_dive))
|
||||||
#define current_dc (get_dive_dc(current_dive, dc_number))
|
#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)
|
static inline struct dive *get_dive(int nr)
|
||||||
{
|
{
|
||||||
|
|
|
@ -909,6 +909,7 @@ void MainWindow::setupForAddAndPlan(const char *model)
|
||||||
displayed_dive.id = dive_getUniqID(&displayed_dive);
|
displayed_dive.id = dive_getUniqID(&displayed_dive);
|
||||||
displayed_dive.when = QDateTime::currentMSecsSinceEpoch() / 1000L + gettimezoneoffset() + 3600;
|
displayed_dive.when = QDateTime::currentMSecsSinceEpoch() / 1000L + gettimezoneoffset() + 3600;
|
||||||
displayed_dive.dc.model = strdup(model); // don't translate! this is stored in the XML file
|
displayed_dive.dc.model = strdup(model); // don't translate! this is stored in the XML file
|
||||||
|
dc_number = 1;
|
||||||
// setup the dive cylinders
|
// setup the dive cylinders
|
||||||
DivePlannerPointsModel::instance()->clear();
|
DivePlannerPointsModel::instance()->clear();
|
||||||
DivePlannerPointsModel::instance()->setupCylinders();
|
DivePlannerPointsModel::instance()->setupCylinders();
|
||||||
|
|
|
@ -798,7 +798,6 @@ void MainTab::acceptChanges()
|
||||||
addedId = displayed_dive.id;
|
addedId = displayed_dive.id;
|
||||||
}
|
}
|
||||||
struct dive *cd = current_dive;
|
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
|
// 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)
|
// were identical with the master dive shown (and mark the divelist as changed)
|
||||||
if (!same_string(displayed_dive.suit, cd->suit))
|
if (!same_string(displayed_dive.suit, cd->suit))
|
||||||
|
@ -1145,7 +1144,6 @@ void MainTab::divetype_Changed(int index)
|
||||||
{
|
{
|
||||||
if (editMode == IGNORE)
|
if (editMode == IGNORE)
|
||||||
return;
|
return;
|
||||||
struct divecomputer *displayed_dc = get_dive_dc(&displayed_dive, dc_number);
|
|
||||||
displayed_dc->divemode = (enum dive_comp_type) index;
|
displayed_dc->divemode = (enum dive_comp_type) index;
|
||||||
update_setpoint_events(&displayed_dive, displayed_dc);
|
update_setpoint_events(&displayed_dive, displayed_dc);
|
||||||
markChangedWidget(ui.DiveType);
|
markChangedWidget(ui.DiveType);
|
||||||
|
|
|
@ -428,7 +428,7 @@ void DivePercentageItem::paint(QPainter *painter, const QStyleOptionGraphicsItem
|
||||||
struct gasmix *gasmix = NULL;
|
struct gasmix *gasmix = NULL;
|
||||||
struct event *ev = NULL;
|
struct event *ev = NULL;
|
||||||
int sec = dataModel->index(i, DivePlotDataModel::TIME).data().toInt();
|
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);
|
int inert = 1000 - get_o2(gasmix);
|
||||||
mypen.setBrush(QBrush(ColorScale(value, inert)));
|
mypen.setBrush(QBrush(ColorScale(value, inert)));
|
||||||
painter->setPen(mypen);
|
painter->setPen(mypen);
|
||||||
|
|
Loading…
Add table
Reference in a new issue