Commit Diff


commit - 297aa7d188286c22bf8bb1f1fa43db6ea0787075
commit + d9f741dce5483157626a854e21bf5fa420aada02
blob - e3182a332db83397e5c43101d95680106c42fb0b
blob + 0b19dfd9b61bdf2cc9abd839cb844107acf17d44
--- ctlitem.c
+++ ctlitem.c
@@ -159,13 +159,10 @@ _on_scale_value_changed(GObject *o, gpointer user_data
 {
 	SiomixerCtlItem *item = SIOMIXER_CTL_ITEM(o);
 
-#if 0
 	/* Rate limit */
 	if (item->timeout != 0)
 		return;
 	item->timeout = g_timeout_add(150, _on_debounce_timeout, o);
-#endif
-	sioctl_setval(s.hdl, item->desc.addr, item->level);
 }
 
 GtkWidget *
@@ -235,6 +232,7 @@ void
 siomixer_ctl_item_set_level(SiomixerCtlItem *self, int level)
 {
 	self->level = level;
+
 	g_object_notify_by_pspec(G_OBJECT(self),
 	    properties[PROP_LEVEL]);
 }
blob - 5b2c3476bf34ad945e8306531f0fd572b8b65631
blob + fe98fd44e9dc4af72d6fa6496fa294448ce850f5
--- siomixer.c
+++ siomixer.c
@@ -223,30 +223,16 @@ activate (GtkApplication *app, gpointer user_data)
 void
 onctl(void *arg, unsigned addr, unsigned val)
 {
-#if 0
-	struct info *i;
+	SiomixerCtlItem *item = NULL;
+	unsigned i, n_items;
 
-	/* Update infolist */
-	i = s.infolist;
-	for (;;) {
-		if (i == NULL)
-			return;
-		if (i->ctladdr == addr)
+	n_items = g_list_model_get_n_items(G_LIST_MODEL(s.store));
+	for (i = 0; i < n_items; i++) {
+		item = g_list_model_get_item(G_LIST_MODEL(s.store), i);
+		if (addr == siomixer_ctl_item_get_addr(item))
 			break;
-		i = i->next;
 	}
-	if (i->desc.type == SIOCTL_SEL) {
-		if (strcmp(i->desc.node0.name, "server") == 0 &&
-		    strcmp(i->desc.func, "device") == 0) {
-			/* XXX: Should update the dropdown status here */
-		}
-	} else {
-		i->curval = val;
-		if (i->widget)
-			gtk_range_set_value(audiowidget_get_gtkrange(i->widget),
-			    i->curval);
-	}
-#endif
+	siomixer_ctl_item_set_level(item, val);
 }
 
 static gboolean