summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mixer/simple_none.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/mixer/simple_none.c b/src/mixer/simple_none.c
index a90ee84c..0f23a063 100644
--- a/src/mixer/simple_none.c
+++ b/src/mixer/simple_none.c
@@ -234,12 +234,11 @@ static long from_user(selem_none_t *s, int dir, selem_ctl_t *c, long value)
static int elem_read_volume(selem_none_t *s, int dir, selem_ctl_type_t type)
{
- snd_ctl_elem_value_t *ctl;
+ snd_ctl_elem_value_t ctl = {0};
unsigned int idx;
int err;
selem_ctl_t *c = &s->ctls[type];
- snd_ctl_elem_value_alloca(&ctl);
- if ((err = snd_hctl_elem_read(c->elem, ctl)) < 0)
+ if ((err = snd_hctl_elem_read(c->elem, &ctl)) < 0)
return err;
for (idx = 0; idx < s->str[dir].channels; idx++) {
unsigned int idx1 = idx;
@@ -247,25 +246,24 @@ static int elem_read_volume(selem_none_t *s, int dir, selem_ctl_type_t type)
idx1 = 0;
s->str[dir].vol[idx] =
to_user(s, dir, c,
- snd_ctl_elem_value_get_integer(ctl, idx1));
+ snd_ctl_elem_value_get_integer(&ctl, idx1));
}
return 0;
}
static int elem_read_switch(selem_none_t *s, int dir, selem_ctl_type_t type)
{
- snd_ctl_elem_value_t *ctl;
+ snd_ctl_elem_value_t ctl = {0};
unsigned int idx;
int err;
selem_ctl_t *c = &s->ctls[type];
- snd_ctl_elem_value_alloca(&ctl);
- if ((err = snd_hctl_elem_read(c->elem, ctl)) < 0)
+ if ((err = snd_hctl_elem_read(c->elem, &ctl)) < 0)
return err;
for (idx = 0; idx < s->str[dir].channels; idx++) {
unsigned int idx1 = idx;
if (idx >= c->values)
idx1 = 0;
- if (!snd_ctl_elem_value_get_integer(ctl, idx1))
+ if (!snd_ctl_elem_value_get_integer(&ctl, idx1))
s->str[dir].sw &= ~(1 << idx);
}
return 0;