{
struct gopt_str *s = (struct gopt_str *) data;
- if (flist_empty(&s->gopt.changed_list))
- free(s);
-
+ free(s);
gtk_widget_destroy(w);
}
{
struct gopt_combo *c = (struct gopt_combo *) data;
- if (flist_empty(&c->gopt.changed_list))
- free(c);
-
+ free(c);
gtk_widget_destroy(w);
}
gopt_changed(&m->gopt);
}
+static void gopt_str_multi_destroy(GtkWidget *w, gpointer data)
+{
+ struct gopt_str_multi *m = (struct gopt_str_multi *) data;
+
+ free(m);
+ gtk_widget_destroy(w);
+}
+
static struct gopt *gopt_new_str_multi(struct gopt_job_view *gjv,
struct fio_option *o, unsigned int idx)
{
i++;
}
+ g_signal_connect(G_OBJECT(m->gopt.box), "destroy", G_CALLBACK(gopt_str_multi_destroy), m);
return &m->gopt;
}
{
struct gopt_int *i = (struct gopt_int *) data;
- if (flist_empty(&i->gopt.changed_list))
- free(i);
-
+ free(i);
gtk_widget_destroy(w);
}
{
struct gopt_bool *b = (struct gopt_bool *) data;
- if (flist_empty(&b->gopt.changed_list))
- free(b);
-
+ free(b);
gtk_widget_destroy(w);
}
{
struct gopt_range *r = (struct gopt_range *) data;
- if (flist_empty(&r->gopt.changed_list))
- free(r);
-
+ free(r);
gtk_widget_destroy(w);
}
{
struct gopt_str_val *g = (struct gopt_str_val *) data;
- if (flist_empty(&g->gopt.changed_list))
- free(g);
-
+ free(g);
gtk_widget_destroy(w);
}
{
struct fio_option *o = &fio_options[gopt->opt_index];
struct gopt_job_view *gjv = gopt->gjv;
- void *to_free = NULL;
switch (gopt->opt_type) {
case GOPT_COMBO_INT: {
c = container_of(gopt, struct gopt_combo, gopt);
gopt_handle_combo_int_changed(gjv, c, o);
- to_free = c;
break;
}
case GOPT_COMBO_STR: {
c = container_of(gopt, struct gopt_combo, gopt);
gopt_handle_combo_str_changed(gjv, c, o);
- to_free = c;
break;
}
case GOPT_INT: {
i = container_of(gopt, struct gopt_int, gopt);
gopt_handle_int_changed(gjv, i, o);
- to_free = i;
break;
}
case GOPT_BOOL: {
b = container_of(gopt, struct gopt_bool, gopt);
gopt_handle_bool_changed(gjv, b, o);
- to_free = b;
break;
}
case GOPT_STR: {
s = container_of(gopt, struct gopt_str, gopt);
gopt_handle_str_changed(gjv, s, o);
- to_free = s;
break;
}
case GOPT_STR_VAL: {
s = container_of(gopt, struct gopt_str_val, gopt);
gopt_handle_str_val_changed(gjv, s, o);
- to_free = s;
break;
}
case GOPT_RANGE: {
r = container_of(gopt, struct gopt_range, gopt);
gopt_handle_range_changed(gjv, r, o);
- to_free = r;
break;
}
case GOPT_STR_MULTI: {
m = container_of(gopt, struct gopt_str_multi, gopt);
gopt_handle_str_multi_changed(gjv, m, o);
- to_free = m;
break;
}
default:
}
g_object_unref(G_OBJECT(gopt->box));
- free(to_free);
}
static void gopt_handle_changed_options(struct gopt_job_view *gjv)