aboutsummaryrefslogtreecommitdiffstats
path: root/profile-widget/diveeventitem.cpp
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2021-01-09 18:58:33 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2021-01-10 15:57:39 -0800
commitbe9f9efb0eae6f09db4c61de7a5156b186dc2ad6 (patch)
tree39e661e97de294d2de514048aa625f58d08a4f88 /profile-widget/diveeventitem.cpp
parent09287809ebb76541a31af94e60856f731e3e9d37 (diff)
downloadsubsurface-be9f9efb0eae6f09db4c61de7a5156b186dc2ad6.tar.gz
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>
Diffstat (limited to 'profile-widget/diveeventitem.cpp')
-rw-r--r--profile-widget/diveeventitem.cpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/profile-widget/diveeventitem.cpp b/profile-widget/diveeventitem.cpp
index 26ee346ff..cfbba4c8a 100644
--- a/profile-widget/diveeventitem.cpp
+++ b/profile-widget/diveeventitem.cpp
@@ -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) ||