Fix the reading of the cylinder start/end pressure from cylinder models

The cylinder model doesn't contain the start/end pressures, they just
contain the cylinder type information.  So trying to read the start and
end pressure from the cylinder model change callback is totally bogus.

We need to set the start/end pressures from the cylinder info when we
create the cylinder widget, and not touch them when the type changes.
So split up the "set_cylinder_spinbuttons()" function in two: one that
sets the type information, and one that sets the start/end pressure.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Linus Torvalds 2011-10-22 17:18:58 +03:00
parent abaed4c275
commit 567c945714

View file

@ -87,13 +87,18 @@ static int convert_volume_pressure(int ml, int mbar, double *v, double *p)
return decimals;
}
static void set_cylinder_spinbuttons(struct cylinder_widget *cylinder, int ml, int mbar, int start, int end)
static void set_cylinder_type_spinbuttons(struct cylinder_widget *cylinder, int ml, int mbar)
{
double volume, pressure;
convert_volume_pressure(ml, mbar, &volume, &pressure);
gtk_spin_button_set_value(cylinder->size, volume);
gtk_spin_button_set_value(cylinder->pressure, pressure);
}
static void set_cylinder_pressure_spinbuttons(struct cylinder_widget *cylinder, int start, int end)
{
double pressure;
convert_pressure(start, &pressure);
gtk_spin_button_set_value(cylinder->start, pressure);
@ -105,7 +110,7 @@ static void cylinder_cb(GtkComboBox *combo_box, gpointer data)
{
GtkTreeIter iter;
GtkTreeModel *model = gtk_combo_box_get_model(combo_box);
int ml, mbar, start, end;
int ml, mbar;
struct cylinder_widget *cylinder = data;
cylinder_t *cyl = current_dive->cylinder + cylinder->index;
@ -134,11 +139,9 @@ static void cylinder_cb(GtkComboBox *combo_box, gpointer data)
gtk_tree_model_get(model, &iter,
CYL_SIZE, &ml,
CYL_WORKP, &mbar,
CYL_STARTP, &start,
CYL_ENDP, &end,
-1);
set_cylinder_spinbuttons(cylinder, ml, mbar, start, end);
set_cylinder_type_spinbuttons(cylinder, ml, mbar);
}
/*
@ -205,8 +208,9 @@ static void show_cylinder(cylinder_t *cyl, struct cylinder_widget *cylinder)
mbar = cyl->type.workingpressure.mbar;
add_cylinder(cylinder, desc, ml, mbar);
set_cylinder_spinbuttons(cylinder,
cyl->type.size.mliter, cyl->type.workingpressure.mbar,
set_cylinder_type_spinbuttons(cylinder,
cyl->type.size.mliter, cyl->type.workingpressure.mbar);
set_cylinder_pressure_spinbuttons(cylinder,
cyl->start.mbar, cyl->end.mbar);
o2 = cyl->gasmix.o2.permille / 10.0;
gtk_widget_set_sensitive(cylinder->o2, !!o2);