X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=divelist.c;h=81779f06d25af2a4e10a05dfa62e953cdec0be7c;hb=4891fa812f04da1f46075433d28fa0f33145e125;hp=2d04eb5b09e4469f13ad5029b6838294497a6d2a;hpb=55352a051cfa7ac519e397cd3d18851e5050517b;p=ext%2Fsubsurface.git diff --git a/divelist.c b/divelist.c index 2d04eb5..81779f0 100644 --- a/divelist.c +++ b/divelist.c @@ -299,6 +299,7 @@ static double calculate_airuse(struct dive *dive) int i; for (i = 0; i < MAX_CYLINDERS; i++) { + pressure_t start, end; cylinder_t *cyl = dive->cylinder + i; int size = cyl->type.size.mliter; double kilo_atm; @@ -306,7 +307,9 @@ static double calculate_airuse(struct dive *dive) if (!size) continue; - kilo_atm = (to_ATM(cyl->start) - to_ATM(cyl->end)) / 1000.0; + start = cyl->start.mbar ? cyl->start : cyl->sample_start; + end = cyl->end.mbar ? cyl->end : cyl->sample_end; + kilo_atm = (to_ATM(start) - to_ATM(end)) / 1000.0; /* Liters of air at 1 atm == milliliters at 1k atm*/ airuse += kilo_atm * size; @@ -332,6 +335,14 @@ static int calculate_sac(struct dive *dive) return sac * 1000; } +void update_cylinder_related_info(struct dive *dive) +{ + if (dive != NULL) { + dive->sac = calculate_sac(dive); + dive->otu = calculate_otu(dive); + } +} + static void get_string(char **str, const char *s) { int len; @@ -449,8 +460,7 @@ static void fill_dive_list(void) for (i = 0; i < dive_table.nr; i++) { struct dive *dive = dive_table.dives[i]; - dive->otu = calculate_otu(dive); - dive->sac = calculate_sac(dive); + update_cylinder_related_info(dive); gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, DIVE_INDEX, i,