Lines Matching refs:elem
205 snd_hctl_elem_t *elem)
208 return hctl->callback(hctl, mask, elem);
212 static int snd_hctl_elem_throw_event(snd_hctl_elem_t *elem,
215 if (elem->callback)
216 return elem->callback(elem, mask);
349 static int snd_hctl_elem_add(snd_hctl_t *hctl, snd_hctl_elem_t *elem)
353 elem->compare_weight = get_compare_weight(&elem->id);
365 list_add_tail(&elem->list, &hctl->elems);
366 hctl->pelems[0] = elem;
368 idx = _snd_hctl_find_elem(hctl, &elem->id, &dir);
371 list_add(&elem->list, &hctl->pelems[idx]->list);
374 list_add_tail(&elem->list, &hctl->pelems[idx]->list);
379 hctl->pelems[idx] = elem;
382 return snd_hctl_throw_event(hctl, SNDRV_CTL_EVENT_MASK_ADD, elem);
387 snd_hctl_elem_t *elem = hctl->pelems[idx];
389 snd_hctl_elem_throw_event(elem, SNDRV_CTL_EVENT_MASK_REMOVE);
390 list_del(&elem->list);
391 free(elem);
518 * \param elem HCTL element
521 snd_hctl_elem_t *snd_hctl_elem_next(snd_hctl_elem_t *elem)
523 assert(elem);
524 if (elem->list.next == &elem->hctl->elems)
526 return list_entry(elem->list.next, snd_hctl_elem_t, list);
531 * \param elem HCTL element
534 snd_hctl_elem_t *snd_hctl_elem_prev(snd_hctl_elem_t *elem)
536 assert(elem);
537 if (elem->list.prev == &elem->hctl->elems)
539 return list_entry(elem->list.prev, snd_hctl_elem_t, list);
592 snd_hctl_elem_t *elem;
593 elem = calloc(1, sizeof(snd_hctl_elem_t));
594 if (elem == NULL) {
599 elem->id = list.pids[idx];
600 elem->hctl = hctl;
601 elem->compare_weight = get_compare_weight(&elem->id);
602 hctl->pelems[idx] = elem;
603 list_add_tail(&elem->list, &hctl->elems);
728 snd_hctl_elem_t *elem;
739 if (event->data.elem.mask == SNDRV_CTL_EVENT_MASK_REMOVE) {
741 res = _snd_hctl_find_elem(hctl, &event->data.elem.id, &dir);
748 if (event->data.elem.mask & SNDRV_CTL_EVENT_MASK_ADD) {
749 elem = calloc(1, sizeof(snd_hctl_elem_t));
750 if (elem == NULL)
752 elem->id = event->data.elem.id;
753 elem->hctl = hctl;
754 res = snd_hctl_elem_add(hctl, elem);
758 if (event->data.elem.mask & (SNDRV_CTL_EVENT_MASK_VALUE |
760 elem = snd_hctl_find_elem(hctl, &event->data.elem.id);
761 assert(elem);
762 if (!elem)
764 res = snd_hctl_elem_throw_event(elem, event->data.elem.mask &
800 * \param elem HCTL element
804 int snd_hctl_elem_info(snd_hctl_elem_t *elem, snd_ctl_elem_info_t *info)
806 assert(elem);
807 assert(elem->hctl);
809 info->id = elem->id;
810 return snd_ctl_elem_info(elem->hctl->ctl, info);
815 * \param elem HCTL element
819 int snd_hctl_elem_read(snd_hctl_elem_t *elem, snd_ctl_elem_value_t * value)
821 assert(elem);
822 assert(elem->hctl);
824 value->id = elem->id;
825 return snd_ctl_elem_read(elem->hctl->ctl, value);
830 * \param elem HCTL element
836 int snd_hctl_elem_write(snd_hctl_elem_t *elem, snd_ctl_elem_value_t * value)
838 assert(elem);
839 assert(elem->hctl);
841 value->id = elem->id;
842 return snd_ctl_elem_write(elem->hctl->ctl, value);
847 * \param elem HCTL element
852 int snd_hctl_elem_tlv_read(snd_hctl_elem_t *elem, unsigned int *tlv, unsigned int tlv_size)
854 assert(elem);
857 return snd_ctl_elem_tlv_read(elem->hctl->ctl, &elem->id, tlv, tlv_size);
862 * \param elem HCTL element
868 int snd_hctl_elem_tlv_write(snd_hctl_elem_t *elem, const unsigned int *tlv)
870 assert(elem);
873 return snd_ctl_elem_tlv_write(elem->hctl->ctl, &elem->id, tlv);
878 * \param elem HCTL element
884 int snd_hctl_elem_tlv_command(snd_hctl_elem_t *elem, const unsigned int *tlv)
886 assert(elem);
889 return snd_ctl_elem_tlv_command(elem->hctl->ctl, &elem->id, tlv);
894 * \param elem HCTL element
897 snd_hctl_t *snd_hctl_elem_get_hctl(snd_hctl_elem_t *elem)
899 assert(elem);
900 return elem->hctl;