summaryrefslogtreecommitdiffstats
path: root/core/dive.c
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/dive.c
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/dive.c')
-rw-r--r--core/dive.c21
1 files changed, 9 insertions, 12 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)