mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
get_gas_at_time needs to always give us a valid gas
Before this function was changed it was really supposed to just change a gas that was passed in in case there was an event that changed the mix - but with the new name the caller will assume that they get a valid gasmix. And promptly we had one caller that didn't initialize gas to be based on the first cylinder before calling get_gas_at_time(). Instead of adding yet one more spot that knows about the oddity of the old API I simply changed get_gas_at_time() to do what it name appears to imply and fixed the other callers not to bother to initialize the gasmix. Fixes #647 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
359613210b
commit
17bcd1bc60
3 changed files with 8 additions and 8 deletions
|
@ -153,7 +153,7 @@ int total_weight(struct dive *dive)
|
|||
|
||||
static int active_o2(struct dive *dive, struct divecomputer *dc, duration_t time)
|
||||
{
|
||||
struct gasmix gas = dive->cylinder[0].gasmix;
|
||||
struct gasmix gas;
|
||||
get_gas_at_time(dive, dc, time, &gas);
|
||||
return get_o2(&gas);
|
||||
}
|
||||
|
|
11
planner.c
11
planner.c
|
@ -94,11 +94,13 @@ void set_display_transitions(bool display)
|
|||
plan_display_transitions = display;
|
||||
}
|
||||
|
||||
/* get the gas at a certain time during the dive */
|
||||
void get_gas_at_time(struct dive *dive, struct divecomputer *dc, duration_t time, struct gasmix *gas)
|
||||
{
|
||||
// we don't modify the values passed in if nothing is found
|
||||
// so don't call with uninitialized gasmix !
|
||||
// we always start with the first gas, so that's our gas
|
||||
// unless an event tells us otherwise
|
||||
struct event *event = dc->events;
|
||||
*gas = dive->cylinder[0].gasmix;
|
||||
while (event && event->time.seconds <= time.seconds) {
|
||||
if (!strcmp(event->name, "gaschange")) {
|
||||
int cylinder_idx = get_cylinder_index(dive, event);
|
||||
|
@ -153,8 +155,7 @@ double tissue_at_end(struct dive *dive, char **cached_datap)
|
|||
if (!dc->samples)
|
||||
return tissue_tolerance;
|
||||
psample = sample = dc->sample;
|
||||
/* we always start with gas 0 (unless an event tells us otherwise) */
|
||||
gas = dive->cylinder[0].gasmix;
|
||||
|
||||
for (i = 0; i < dc->samples; i++, sample++) {
|
||||
t1 = sample->time;
|
||||
get_gas_at_time(dive, dc, t0, &gas);
|
||||
|
@ -551,7 +552,7 @@ static void add_plan_to_notes(struct diveplan *diveplan, struct dive *dive, bool
|
|||
translate("gettextFromC", "gas"));
|
||||
}
|
||||
do {
|
||||
struct gasmix gasmix, newgasmix;
|
||||
struct gasmix gasmix, newgasmix = {};
|
||||
const char *depth_unit;
|
||||
double depthvalue;
|
||||
int decimals;
|
||||
|
|
|
@ -106,8 +106,7 @@ void DivePlannerPointsModel::loadFromDive(dive *d)
|
|||
{
|
||||
CylindersModel::instance()->updateDive();
|
||||
duration_t lasttime = {};
|
||||
// we start with the first gas and see if it was changed
|
||||
struct gasmix gas = d->cylinder[0].gasmix;
|
||||
struct gasmix gas;
|
||||
for (int i = 0; i < d->dc.samples - 1; i++) {
|
||||
const sample &s = d->dc.sample[i];
|
||||
if (s.time.seconds == 0)
|
||||
|
|
Loading…
Add table
Reference in a new issue