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>
This commit is contained in:
Berthold Stoeger 2018-11-18 11:06:24 +01:00 committed by Dirk Hohndel
parent dcb2a17b7d
commit 3b9e0b5931
4 changed files with 11 additions and 18 deletions

View file

@ -2578,24 +2578,21 @@ static const struct dive *get_preferred_trip(const struct dive *a, const struct
{ {
dive_trip_t *atrip, *btrip; dive_trip_t *atrip, *btrip;
/* /* If only one dive has a trip, choose that */
* 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 */
atrip = a->divetrip; atrip = a->divetrip;
btrip = b->divetrip; btrip = b->divetrip;
if (!atrip) if (!atrip)
return b; return b;
if (!btrip) if (!btrip)
return a; 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) if (!atrip->location)
return b; return b;
if (!btrip->location) if (!btrip->location)

View file

@ -282,7 +282,6 @@ typedef enum {
TF_NONE, TF_NONE,
NO_TRIP, NO_TRIP,
IN_TRIP, IN_TRIP,
ASSIGNED_TRIP,
NUM_TRIPFLAGS NUM_TRIPFLAGS
} tripflag_t; } tripflag_t;

View file

@ -896,7 +896,7 @@ void add_dive_to_trip(struct dive *dive, dive_trip_t *trip)
remove_dive_from_trip(dive, false); remove_dive_from_trip(dive, false);
add_dive_to_table(&trip->dives, -1, dive); add_dive_to_table(&trip->dives, -1, dive);
dive->divetrip = trip; dive->divetrip = trip;
dive->tripflag = ASSIGNED_TRIP; dive->tripflag = IN_TRIP;
} }
dive_trip_t *alloc_trip(void) 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); dive_trip = create_trip_from_dive(dive);
insert_trip(dive_trip); insert_trip(dive_trip);
dive->tripflag = IN_TRIP;
add_dive_to_trip(dive, dive_trip); add_dive_to_trip(dive, dive_trip);
return dive_trip; return dive_trip;
} }

View file

@ -254,10 +254,8 @@ void dive_end(struct parser_state *state)
free_dive(state->cur_dive); free_dive(state->cur_dive);
else else
record_dive_to_table(state->cur_dive, state->target_table); 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); add_dive_to_trip(state->cur_dive, state->cur_trip);
state->cur_dive->tripflag = IN_TRIP;
}
state->cur_dive = NULL; state->cur_dive = NULL;
state->cur_dc = NULL; state->cur_dc = NULL;
state->cur_location.lat.udeg = 0; state->cur_location.lat.udeg = 0;