[alsa-devel] [RFC PATCH] alsactl: skip inactive controls
When using alsactl to save or restore the card settings, it currently skips over controls that don't have the appropriate read/write permissions. It should also skip over inactive controls, otherwise it will get an error when it tries to access that control, and will fail to save the card state (or fully restore it.) --- I noticed this while adding surround support to SiS7019. I think the problem affects other cards, as I am following the pattern used by trident, rme*, cmipci, emu10k1 and others.
This is only for discussion, since I've not tested this (nor even compiled it) but I think it will fix the issue.
diff -r d3ba62cd2776 alsactl/state.c --- a/alsactl/state.c Fri Dec 14 15:29:51 2007 +0100 +++ b/alsactl/state.c Sat Dec 15 14:06:35 2007 -0500 @@ -250,7 +250,8 @@ static int get_control(snd_ctl_t *handle return err; }
- if (!snd_ctl_elem_info_is_readable(info)) + if (snd_ctl_elem_info_is_inactive(info) || + !snd_ctl_elem_info_is_readable(info)) return 0; snd_ctl_elem_value_set_id(ctl, id); err = snd_ctl_elem_read(handle, ctl); @@ -1306,7 +1307,8 @@ static int set_control(snd_ctl_t *handle } }
- if (!snd_ctl_elem_info_is_writable(info)) + if (snd_ctl_elem_info_is_inactive(info) || + !snd_ctl_elem_info_is_writable(info)) return 0; snd_ctl_elem_value_set_numid(ctl, numid1);
At Sat, 15 Dec 2007 14:13:41 -0500, Dave Dillow wrote:
When using alsactl to save or restore the card settings, it currently skips over controls that don't have the appropriate read/write permissions. It should also skip over inactive controls, otherwise it will get an error when it tries to access that control, and will fail to save the card state (or fully restore it.)
I noticed this while adding surround support to SiS7019. I think the problem affects other cards, as I am following the pattern used by trident, rme*, cmipci, emu10k1 and others.
This is only for discussion, since I've not tested this (nor even compiled it) but I think it will fix the issue.
This is obviously a right fix. I applied it to HG tree now. Thanks.
Takashi
diff -r d3ba62cd2776 alsactl/state.c --- a/alsactl/state.c Fri Dec 14 15:29:51 2007 +0100 +++ b/alsactl/state.c Sat Dec 15 14:06:35 2007 -0500 @@ -250,7 +250,8 @@ static int get_control(snd_ctl_t *handle return err; }
- if (!snd_ctl_elem_info_is_readable(info))
- if (snd_ctl_elem_info_is_inactive(info) ||
return 0; snd_ctl_elem_value_set_id(ctl, id); err = snd_ctl_elem_read(handle, ctl);!snd_ctl_elem_info_is_readable(info))
@@ -1306,7 +1307,8 @@ static int set_control(snd_ctl_t *handle } }
- if (!snd_ctl_elem_info_is_writable(info))
- if (snd_ctl_elem_info_is_inactive(info) ||
return 0; snd_ctl_elem_value_set_numid(ctl, numid1);!snd_ctl_elem_info_is_writable(info))
Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
participants (2)
-
Dave Dillow
-
Takashi Iwai