Changed control to use events mask. Added subscribe ioctl

This commit is contained in:
Abramo Bagnara 2001-02-13 21:29:38 +00:00
parent fdacf95e6c
commit b62252dd77

View file

@ -969,27 +969,16 @@ static void events_remove(snd_hctl_elem_t *helem)
printf("\n"); printf("\n");
} }
static void events_rebuild() int element_callback(snd_hctl_elem_t *elem, unsigned int mask)
{ {
printf("event rebuild\n"); if (mask == SND_CTL_EVENT_MASK_REMOVE) {
}
int element_callback(snd_hctl_elem_t *elem, snd_ctl_event_type_t event)
{
switch (event) {
case SND_CTL_EVENT_INFO:
events_info(elem);
break;
case SND_CTL_EVENT_VALUE:
events_value(elem);
break;
case SND_CTL_EVENT_REMOVE:
events_remove(elem); events_remove(elem);
break; return 0;
default:
assert(0);
break;
} }
if (mask & SND_CTL_EVENT_MASK_INFO)
events_info(elem);
if (mask & SND_CTL_EVENT_MASK_VALUE)
events_value(elem);
return 0; return 0;
} }
@ -1004,20 +993,11 @@ static void events_add(snd_hctl_elem_t *helem)
snd_hctl_elem_set_callback(helem, element_callback); snd_hctl_elem_set_callback(helem, element_callback);
} }
int ctl_callback(snd_hctl_t *ctl, snd_ctl_event_type_t event, int ctl_callback(snd_hctl_t *ctl, unsigned int mask,
snd_hctl_elem_t *elem) snd_hctl_elem_t *elem)
{ {
switch (event) { if (mask & SND_CTL_EVENT_MASK_ADD)
case SND_CTL_EVENT_REBUILD:
events_rebuild();
break;
case SND_CTL_EVENT_ADD:
events_add(elem); events_add(elem);
break;
default:
assert(0);
break;
}
return 0; return 0;
} }
@ -1066,31 +1046,20 @@ static void sevents_remove(snd_mixer_selem_id_t *sid)
printf("event remove: '%s',%i\n", snd_mixer_selem_id_get_name(sid), snd_mixer_selem_id_get_index(sid)); printf("event remove: '%s',%i\n", snd_mixer_selem_id_get_name(sid), snd_mixer_selem_id_get_index(sid));
} }
int melem_event(snd_mixer_elem_t *elem, snd_ctl_event_type_t event) int melem_event(snd_mixer_elem_t *elem, unsigned int mask)
{ {
snd_mixer_selem_id_t *sid; snd_mixer_selem_id_t *sid;
snd_mixer_selem_id_alloca(&sid); snd_mixer_selem_id_alloca(&sid);
snd_mixer_selem_get_id(elem, sid); snd_mixer_selem_get_id(elem, sid);
switch (event) { if (mask == SND_CTL_EVENT_MASK_REMOVE) {
case SND_CTL_EVENT_INFO:
sevents_info(sid);
break;
case SND_CTL_EVENT_VALUE:
sevents_value(sid);
break;
case SND_CTL_EVENT_REMOVE:
sevents_remove(sid); sevents_remove(sid);
break;
default:
assert(0);
break;
}
return 0; return 0;
} }
if (mask & SND_CTL_EVENT_MASK_INFO)
static void sevents_rebuild() sevents_info(sid);
{ if (mask & SND_CTL_EVENT_MASK_VALUE)
printf("event rebuild\n"); sevents_value(sid);
return 0;
} }
static void sevents_add(snd_mixer_elem_t *elem) static void sevents_add(snd_mixer_elem_t *elem)
@ -1102,20 +1071,11 @@ static void sevents_add(snd_mixer_elem_t *elem)
snd_mixer_elem_set_callback(elem, melem_event); snd_mixer_elem_set_callback(elem, melem_event);
} }
int mixer_event(snd_mixer_t *mixer, snd_ctl_event_type_t event, int mixer_event(snd_mixer_t *mixer, unsigned int mask,
snd_mixer_elem_t *elem) snd_mixer_elem_t *elem)
{ {
switch (event) { if (mask & SND_CTL_EVENT_MASK_ADD)
case SND_CTL_EVENT_REBUILD:
sevents_rebuild();
break;
case SND_CTL_EVENT_ADD:
sevents_add(elem); sevents_add(elem);
break;
default:
assert(0);
break;
}
return 0; return 0;
} }