[alsa-devel] [PATCH] control, hw, rawmidi: accept control device node as card identifier when opening
Lennart Poettering
mznyfn at 0pointer.de
Tue May 12 15:24:47 CEST 2009
On Tue, 12.05.09 14:42, Jaroslav Kysela (perex at perex.cz) wrote:
>
> On Tue, 12 May 2009, Lennart Poettering wrote:
>
> > With my original patch there are no superfluous opens.
>
> If application uses more *open() calls from alsa-lib for one card (for
> example to open ctl handle and pcm handle), it's better to obtain card
> index at first, because each conversion requires one or more (card id)
> open/close sequence for control device to get card_info. Providing direct
> card index eliminates this conversion. It's just suggested optimization.
I think if apps want to open ctl and hw at the same time the most
elegant way would be this:
<snip>
snd_pcm_open(&pcm, "hw:/dev/snd/by-path/yaddayadda", ...);
snd_pcm_info(pcm, &info);
snd_ctl_open(&ctl, snprint("hw:%i", snd_pcm_info_get_card(info)));
</snip>
With my patch that costs exactly two open() calls. It's also more
flexible since it will handle arbitrary device strings, doesn't need
to hardcode "hw:".
You seem to suggest this:
<snip>
i = snd_card_index("hw:/dev/snd/by-path/yaddayadda");
snd_hw_open(&hw, snprint("hw:%i", i));
snd_ctl_open(&ctl, snprint("hw:%i", i));
</snip>
Which your patch that costs three open()s. And hardcodes "hw".
I really would like to know why my patch was so bad?
Lennart
--
Lennart Poettering Red Hat, Inc.
lennart [at] poettering [dot] net
http://0pointer.net/lennart/ GnuPG 0x1A015CC4
More information about the Alsa-devel
mailing list