commit - 297aa7d188286c22bf8bb1f1fa43db6ea0787075
commit + d9f741dce5483157626a854e21bf5fa420aada02
blob - e3182a332db83397e5c43101d95680106c42fb0b
blob + 0b19dfd9b61bdf2cc9abd839cb844107acf17d44
--- ctlitem.c
+++ ctlitem.c
{
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 *
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
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