mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-01 03:23:24 +00:00
Correctly handle first gas when deciding if gas is used
Gas with index 0 is assumed to be the first gas only if there is no gaschage event in the first 30 seconds of the dive. [Dirk Hohndel: minor formatting change in a logical expression] Signed-off-by: Robert C. Helling <helling@atdotde.de> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
ae4bd802af
commit
959dc942be
1 changed files with 9 additions and 1 deletions
10
divelist.c
10
divelist.c
|
@ -466,7 +466,8 @@ static void get_dive_gas(struct dive *dive, int *o2_p, int *he_p, int *o2low_p)
|
|||
int o2 = mix->o2.permille;
|
||||
int he = mix->he.permille;
|
||||
struct divecomputer *dc = &dive->dc;
|
||||
int used = !i; /* The first gas is always used */
|
||||
int used = 0;
|
||||
int first_gas_explicit = 0;
|
||||
|
||||
while (dc){
|
||||
struct event *event = dc->events;
|
||||
|
@ -476,6 +477,8 @@ static void get_dive_gas(struct dive *dive, int *o2_p, int *he_p, int *o2low_p)
|
|||
unsigned int event_he = event->value >> 16;
|
||||
unsigned int event_o2 = event->value & 0xffff;
|
||||
|
||||
if (event->time.seconds < 30)
|
||||
first_gas_explicit = 1;
|
||||
if (is_air(o2, he)){
|
||||
if (is_air(event_o2 * 10, event_he * 10))
|
||||
used = 1;
|
||||
|
@ -490,6 +493,11 @@ static void get_dive_gas(struct dive *dive, int *o2_p, int *he_p, int *o2low_p)
|
|||
}
|
||||
dc = dc->next;
|
||||
}
|
||||
|
||||
/* Unless explicity set, the first gas to use has index 0 */
|
||||
if (i == 0 && !first_gas_explicit)
|
||||
used = 1;
|
||||
|
||||
if (!used)
|
||||
continue;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue