Lines Matching refs:elem
63 snd_sctl_elem_t *elem = list_entry(h->elems.next, snd_sctl_elem_t, list);
64 snd_ctl_elem_id_free(elem->id);
65 snd_ctl_elem_info_free(elem->info);
66 snd_ctl_elem_value_free(elem->val);
67 snd_ctl_elem_value_free(elem->mask);
68 snd_ctl_elem_value_free(elem->old);
69 list_del(&elem->list);
70 free(elem);
90 snd_sctl_elem_t *elem = list_entry(pos, snd_sctl_elem_t, list);
93 if (elem->lock) {
94 err = snd_ctl_elem_lock(h->ctl, elem->id);
96 SNDERR("Cannot lock ctl elem");
100 err = snd_ctl_elem_read(h->ctl, elem->old);
102 SNDERR("Cannot read ctl elem");
105 count = snd_ctl_elem_info_get_count(elem->info);
106 type = snd_ctl_elem_info_get_type(elem->info);
111 old = snd_ctl_elem_value_get_boolean(elem->old, k);
112 mask = snd_ctl_elem_value_get_boolean(elem->mask, k);
115 val = snd_ctl_elem_value_get_boolean(elem->val, k);
117 snd_ctl_elem_value_set_boolean(elem->val, k, val);
124 old = snd_ctl_elem_value_get_integer(elem->old, k);
125 mask = snd_ctl_elem_value_get_integer(elem->mask, k);
128 val = snd_ctl_elem_value_get_integer(elem->val, k);
130 snd_ctl_elem_value_set_integer(elem->val, k, val);
137 old = snd_ctl_elem_value_get_enumerated(elem->old, k);
138 mask = snd_ctl_elem_value_get_enumerated(elem->mask, k);
141 val = snd_ctl_elem_value_get_enumerated(elem->val, k);
143 snd_ctl_elem_value_set_enumerated(elem->val, k, val);
153 old = snd_ctl_elem_value_get_byte(elem->old, k);
154 mask = snd_ctl_elem_value_get_byte(elem->mask, k);
157 val = snd_ctl_elem_value_get_byte(elem->val, k);
159 snd_ctl_elem_value_set_byte(elem->val, k, val);
167 err = snd_ctl_elem_write(h->ctl, elem->val);
169 SNDERR("Cannot write ctl elem");
187 snd_sctl_elem_t *elem = list_entry(pos, snd_sctl_elem_t, list);
188 if (elem->lock) {
189 err = snd_ctl_elem_unlock(h->ctl, elem->id);
191 SNDERR("Cannot unlock ctl elem");
195 if (elem->preserve) {
196 err = snd_ctl_elem_write(h->ctl, elem->old);
198 SNDERR("Cannot restore ctl elem");
228 SNDERR("Cannot obtain info for CTL elem");
403 snd_sctl_elem_t *elem = NULL;
526 elem = calloc(1, sizeof(*elem));
527 if (!elem)
529 err = snd_ctl_elem_id_malloc(&elem->id);
532 err = snd_ctl_elem_info_malloc(&elem->info);
535 err = snd_ctl_elem_value_malloc(&elem->val);
538 err = snd_ctl_elem_value_malloc(&elem->mask);
541 err = snd_ctl_elem_value_malloc(&elem->old);
544 elem->lock = lock;
545 elem->preserve = preserve;
546 snd_ctl_elem_id_set_interface(elem->id, iface);
547 snd_ctl_elem_id_set_name(elem->id, name);
548 snd_ctl_elem_id_set_index(elem->id, index);
549 snd_ctl_elem_id_set_device(elem->id, device);
550 snd_ctl_elem_id_set_subdevice(elem->id, subdevice);
551 snd_ctl_elem_info_set_id(elem->info, elem->id);
552 err = snd_ctl_elem_info(h->ctl, elem->info);
555 SNDERR("Cannot obtain info for CTL elem (%s,'%s',%li,%li,%li): %s", snd_ctl_elem_iface_name(iface), name, index, device, subdevice, snd_strerror(err));
558 snd_ctl_elem_value_set_id(elem->val, elem->id);
559 snd_ctl_elem_value_set_id(elem->old, elem->id);
561 err = snd_config_get_ctl_elem_value(value, h->ctl, elem->val, NULL, elem->info);
564 err = snd_config_get_ctl_elem_value(mask, h->ctl, elem->mask, NULL, elem->info);
568 err = snd_config_get_ctl_elem_value(value, h->ctl, elem->val, elem->mask, elem->info);
573 err = snd_config_get_ctl_elem_value(value, h->ctl, elem->val, elem->mask, elem->info);
576 list_add_tail(&elem->list, &h->elems);
579 if (err < 0 && elem) {
580 if (elem->id)
581 snd_ctl_elem_id_free(elem->id);
582 if (elem->info)
583 snd_ctl_elem_info_free(elem->info);
584 if (elem->val)
585 snd_ctl_elem_value_free(elem->val);
586 if (elem->mask)
587 snd_ctl_elem_value_free(elem->mask);
588 if (elem->old)
589 snd_ctl_elem_value_free(elem->old);
590 free(elem);