summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2018-11-18 11:06:24 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2018-11-20 08:14:54 -0800
commit3b9e0b59311908f6cbc099f3b7fd5294fd5d0d30 (patch)
tree8c48b277b2e24855903144770338b5af60c785db /core
parentdcb2a17b7dcef6bd0802897f9ef2cfbe4206fe61 (diff)
downloadsubsurface-3b9e0b59311908f6cbc099f3b7fd5294fd5d0d30.tar.gz
Core: remove ASSIGNED_TRIP trip flag
The distinction between ASSIGNED_TRIP and IN_TRIP was used to prefer non-autogenerated trips on merging of dives. But owing to bit rot this seem to have worked only partially anyway: The IN_TRIP field was set in create_and_hookup_trip_from_dive() and immediately overwritten in add_dive_to_trip() called in the next line. Instead, use the trip->autogen flag to check for priority and remove the ASSIGNED_TRIP flag alltogether. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'core')
-rw-r--r--core/dive.c21
-rw-r--r--core/dive.h1
-rw-r--r--core/divelist.c3
-rw-r--r--core/parse.c4
4 files changed, 11 insertions, 18 deletions
diff --git a/core/dive.c b/core/dive.c
index d6fba1714..22f88d43f 100644
--- a/core/dive.c
+++ b/core/dive.c
@@ -2578,24 +2578,21 @@ static const struct dive *get_preferred_trip(const struct dive *a, const struct
{
dive_trip_t *atrip, *btrip;
- /*
- * The larger tripflag is more relevant: we prefer
- * take manually assigned trips over auto-generated
- * ones.
- */
- if (a->tripflag > b->tripflag)
- return a;
-
- if (a->tripflag < b->tripflag)
- return b;
-
- /* Otherwise, look at the trip data and pick the "better" one */
+ /* If only one dive has a trip, choose that */
atrip = a->divetrip;
btrip = b->divetrip;
if (!atrip)
return b;
if (!btrip)
return a;
+
+ /* Both dives have a trip - prefer the non-autogenerated one */
+ if (atrip->autogen && !btrip->autogen)
+ return b;
+ if (!atrip->autogen && btrip->autogen)
+ return a;
+
+ /* Otherwise, look at the trip data and pick the "better" one */
if (!atrip->location)
return b;
if (!btrip->location)
diff --git a/core/dive.h b/core/dive.h
index ef02d3ce6..cc21c3447 100644
--- a/core/dive.h
+++ b/core/dive.h
@@ -282,7 +282,6 @@ typedef enum {
TF_NONE,
NO_TRIP,
IN_TRIP,
- ASSIGNED_TRIP,
NUM_TRIPFLAGS
} tripflag_t;
diff --git a/core/divelist.c b/core/divelist.c
index 7f946b039..f887cc82c 100644
--- a/core/divelist.c
+++ b/core/divelist.c
@@ -896,7 +896,7 @@ void add_dive_to_trip(struct dive *dive, dive_trip_t *trip)
remove_dive_from_trip(dive, false);
add_dive_to_table(&trip->dives, -1, dive);
dive->divetrip = trip;
- dive->tripflag = ASSIGNED_TRIP;
+ dive->tripflag = IN_TRIP;
}
dive_trip_t *alloc_trip(void)
@@ -921,7 +921,6 @@ dive_trip_t *create_and_hookup_trip_from_dive(struct dive *dive)
dive_trip = create_trip_from_dive(dive);
insert_trip(dive_trip);
- dive->tripflag = IN_TRIP;
add_dive_to_trip(dive, dive_trip);
return dive_trip;
}
diff --git a/core/parse.c b/core/parse.c
index 6f12736a8..8683daed4 100644
--- a/core/parse.c
+++ b/core/parse.c
@@ -254,10 +254,8 @@ void dive_end(struct parser_state *state)
free_dive(state->cur_dive);
else
record_dive_to_table(state->cur_dive, state->target_table);
- if (state->cur_trip) {
+ if (state->cur_trip)
add_dive_to_trip(state->cur_dive, state->cur_trip);
- state->cur_dive->tripflag = IN_TRIP;
- }
state->cur_dive = NULL;
state->cur_dc = NULL;
state->cur_location.lat.udeg = 0;