Commit Diff


commit - 64957a6419d22c2e1ccdcee51b7c25067ae6badc
commit + 21a4aa6e130db9eafdda3eed665a7862695fcf53
blob - 79a24e62adbe5a4d5142b94b336b9af035b42ff3
blob + 092e5960d78769f65ea68c59f0c1d30e502ce72f
--- audiowidget.c
+++ audiowidget.c
@@ -80,6 +80,8 @@ audiowidget_new(struct info *i)
 	asprintf(&label, "%s%s.%s", group ? group : "", i->desc.node0.name, i->desc.func);
 
 	GtkWidget *box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5);
+	g_object_ref_sink(box);
+
 	GtkWidget *l = gtk_label_new(label);
 	gtk_widget_set_vexpand(l, FALSE);
 	gtk_box_append(GTK_BOX(box), l);
@@ -101,3 +103,14 @@ audiowidget_new(struct info *i)
 
 	return a;
 }
+
+void
+audiowidget_free(AudioWidget *a)
+{
+	/*
+         * sink and label are owned by box and 
+         * should get freed with it
+         */
+	g_object_unref(a->box);
+	free(a);
+}
blob - 92dc556ba6b02aa36bcc4dc1584c6c75bb45d61c
blob + d314bdaa768d87d861580f3fbc34273cef26af9e
--- siomixer.h
+++ siomixer.h
@@ -32,3 +32,4 @@ struct _audiowidget {
 AudioWidget *audiowidget_new(struct info *);
 GtkWidget *audiowidget_get_gtkwidget(AudioWidget *);
 GtkRange *audiowidget_get_gtkrange(AudioWidget *);
+void audiowidget_free(AudioWidget *);