[alsa-devel] [RFC PATCH] alsactl: skip inactive controls

Takashi Iwai tiwai at suse.de
Mon Dec 17 10:24:41 CET 2007


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) ||
> +				!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);
>  
> 
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
> 


More information about the Alsa-devel mailing list