If volume or switch write fails, the internal contents for element
is changed, but it is wrong. Reread the whole simple element in this
case to get correct values.
return 0;
}
-static int selem_write(snd_mixer_elem_t *elem)
+static int selem_write_main(snd_mixer_elem_t *elem)
{
selem_none_t *s;
unsigned int idx;
return 0;
}
+static int selem_write(snd_mixer_elem_t *elem)
+{
+ int err;
+
+ err = selem_write_main(elem);
+ if (err < 0)
+ selem_read(elem);
+ return err;
+}
+
static void selem_free(snd_mixer_elem_t *elem)
{
selem_none_t *simple = snd_mixer_elem_get_private(elem);