mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
profile: pass dive to EventItem
Don't access the global displayed_dive variable in an effort to make the profile reentrant. Note that this still accesses the global dc_number variable, which will likely have to be removed. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
09287809eb
commit
be9f9efb0e
5 changed files with 16 additions and 9 deletions
|
|
@ -53,11 +53,12 @@ struct event *DiveEventItem::getEvent()
|
|||
return internalEvent;
|
||||
}
|
||||
|
||||
void DiveEventItem::setEvent(struct event *ev, struct gasmix lastgasmix)
|
||||
void DiveEventItem::setEvent(const struct dive *d, struct event *ev, struct gasmix lastgasmix)
|
||||
{
|
||||
if (!ev)
|
||||
return;
|
||||
|
||||
dive = d;
|
||||
free(internalEvent);
|
||||
internalEvent = clone_event(ev);
|
||||
setupPixmap(lastgasmix);
|
||||
|
|
@ -94,7 +95,7 @@ void DiveEventItem::setupPixmap(struct gasmix lastgasmix)
|
|||
} else if (internalEvent->type == SAMPLE_EVENT_BOOKMARK) {
|
||||
setPixmap(EVENT_PIXMAP(":dive-bookmark-icon"));
|
||||
} else if (event_is_gaschange(internalEvent)) {
|
||||
struct gasmix mix = get_gasmix_from_event(&displayed_dive, internalEvent);
|
||||
struct gasmix mix = get_gasmix_from_event(dive, internalEvent);
|
||||
struct icd_data icd_data;
|
||||
bool icd = isobaric_counterdiffusion(lastgasmix, mix, &icd_data);
|
||||
if (mix.he.permille) {
|
||||
|
|
@ -176,7 +177,7 @@ void DiveEventItem::setupToolTipString(struct gasmix lastgasmix)
|
|||
|
||||
if (event_is_gaschange(internalEvent)) {
|
||||
struct icd_data icd_data;
|
||||
struct gasmix mix = get_gasmix_from_event(&displayed_dive, internalEvent);
|
||||
struct gasmix mix = get_gasmix_from_event(dive, internalEvent);
|
||||
struct membuffer mb = {};
|
||||
name += ": ";
|
||||
name += gasname(mix);
|
||||
|
|
@ -224,15 +225,14 @@ void DiveEventItem::eventVisibilityChanged(const QString&, bool)
|
|||
|
||||
bool DiveEventItem::shouldBeHidden()
|
||||
{
|
||||
struct event *event = internalEvent;
|
||||
struct dive *dive = &displayed_dive;
|
||||
struct divecomputer *dc = get_dive_dc(dive, dc_number);
|
||||
const struct event *event = internalEvent;
|
||||
const struct divecomputer *dc = get_dive_dc_const(dive, dc_number);
|
||||
|
||||
/*
|
||||
* Some gas change events are special. Some dive computers just tell us the initial gas this way.
|
||||
* Don't bother showing those
|
||||
*/
|
||||
struct sample *first_sample = &dc->sample[0];
|
||||
const struct sample *first_sample = &dc->sample[0];
|
||||
if (!strcmp(event->name, "gaschange") &&
|
||||
(event->time.seconds == 0 ||
|
||||
(first_sample && event->time.seconds == first_sample->time.seconds) ||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue