load_for_all_cards bug

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



(I originally tried to send this via the moderator without subscribing 
to the list, but it never went through and I never received a moderator 
response. Apparently this list is set up as moderated, but nobody is 
actually moderating it.)

Summary: load_for_all_cards fails with existing configuration elements

In snd_config_hook_load_for_all_cards, the first call to 
snd_config_search attempts to locate an existing configuration node with 
the name of the driver.  Typically none is found, and everything is 
good. However, if such a node is located, the next line assumes it is a 
leaf node with type 'string' and calls snd_config_get_string to fetch 
the string value. If this fails, the entire hook is abandoned.

Because of this, setting something like the following in asoundrc:

cards.<driver name>.foo 0

is sufficient to disable the entire card-specific configuration.

As a concrete example, I have a HDA-Intel sound card. dmix.conf includes 
a way to set period_size, period_time, and periods by using 
configuration elements of the form cards.<driver name>.pcm.dmix.<var>. 
In ~/.asoundrc I add

cards.HDA-Intel.pcm.dmix.period_size 1024

This will cause HDA-Intel.conf to fail to load, and the pcm defined in 
default.conf will fail to find the device-specific pcm 
cards.HDA-Intel.pcm.default, and fall back on the default pcm using 
plughw.  By attempting to configure dmix, I have disabled it.

Fixing this may just be a matter of changing the line in 
snd_config_hook_load_for_all_cards from:

if (snd_config_search(root, fdriver, &n) >= 0) {

to:

if (snd_config_search(root, fdriver, &n) >= 0 && n->type != 
SND_CONFIG_TYPE_COMPOUND) {

I have not tested this.

-Kevin
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux