commit 21a4aa6e130db9eafdda3eed665a7862695fcf53 from: Tobias Heider date: Sat Feb 14 20:54:29 2026 UTC Add audiowidget_free() and fix refcounting 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 *);