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");
205 if (elem->preserve && snd_ctl_elem_value_compare(elem->val, elem->old)) {
206 err = snd_ctl_elem_write(h->ctl, elem->old);
208 SNDERR("Cannot restore ctl elem");
238 SNDERR("Cannot obtain info for CTL elem");
412 snd_sctl_elem_t *elem = NULL;
518 elem = calloc(1, sizeof(*elem));
519 if (!elem)
521 err = snd_ctl_elem_id_malloc(&elem->id);
524 err = snd_ctl_elem_info_malloc(&elem->info);
527 err = snd_ctl_elem_value_malloc(&elem->val);
530 err = snd_ctl_elem_value_malloc(&elem->mask);
533 err = snd_ctl_elem_value_malloc(&elem->old);
536 elem->lock = lock;
537 elem->preserve = preserve;
538 snd_ctl_elem_id_set_interface(elem->id, iface);
539 snd_ctl_elem_id_set_name(elem->id, name);
540 snd_ctl_elem_id_set_index(elem->id, index);
541 snd_ctl_elem_id_set_device(elem->id, device);
542 snd_ctl_elem_id_set_subdevice(elem->id, subdevice);
543 snd_ctl_elem_info_set_id(elem->info, elem->id);
544 err = snd_ctl_elem_info(h->ctl, elem->info);
547 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));
553 snd_ctl_elem_value_set_id(elem->val, elem->id);
554 snd_ctl_elem_value_set_id(elem->old, elem->id);
556 err = snd_config_get_ctl_elem_value(value, h->ctl, elem->val, NULL, elem->info);
559 err = snd_config_get_ctl_elem_value(mask, h->ctl, elem->mask, NULL, elem->info);
563 err = snd_config_get_ctl_elem_value(value, h->ctl, elem->val, elem->mask, elem->info);
568 err = snd_config_get_ctl_elem_value(value, h->ctl, elem->val, elem->mask, elem->info);
571 list_add_tail(&elem->list, &h->elems);
574 if (err < 0 && elem) {
575 if (elem->id)
576 snd_ctl_elem_id_free(elem->id);
577 if (elem->info)
578 snd_ctl_elem_info_free(elem->info);
579 if (elem->val)
580 snd_ctl_elem_value_free(elem->val);
581 if (elem->mask)
582 snd_ctl_elem_value_free(elem->mask);
583 if (elem->old)
584 snd_ctl_elem_value_free(elem->old);
585 free(elem);