Getting closer, I had to change
+            /*----------------------------------------------------------------
+ ** See if it's a valid playback device + **--------------------------------------------------------------*/
+            if (ALSA_TestDeviceForWine(card, device, SND_PCM_STREAM_PLAYBACK) 
== 0)

to check for < 0 (would return -16 when it failed), and it detected default and 
worked great!

Well, then you've essentially noop-ed that line.  That
line serves the function of stripping out odd ball
devices (like my Modem), so I am reluctant to lose it.

The rc of -16 is EBUSY.

To be honest, I find it odd that you're getting
a success while the sound card is in use; in
my testing, any attempt to open a pcm that is
in use generates a -16 return code, whether it
be default:0 or plughw:0 or hw:0.  The current
Wine code should fail in that case.

I'm going to send you a quick test program off list,
if you don't mind trying an experiment for me, that
would be great.


One try it was actually able to open hw:0,0, though the format I was sending 
through was
unsupported and ended up failing to play. It would have worked if plug:hw:0,0 
was opened instead
as plug will do format conversion. I would prefer default in that case also 
however, as wine
was blocking all my other audio apps from working. Always checking for default, 
even if hw works,
might be a good idea.

Well, the rationale now is that we try default:X first, and
then fall back to plughw as the backup.  The direct hw
device is used only when configured (and when we probe
to see if the device is rational).


Also for
+        sprintf(ctlname, "hw:%d", fixedctlcard == -1 ? card : fixedctlcard);
+        rc = snd_ctl_open(&ctl, ctlname, SND_CTL_NONBLOCK);
the case default was used,  you should open default as well rather then hw:0

Hmm.  You raise a good point.  The plughw device does not function
as a ctl device, so in 'traditional' alsa, you always had to open
hw:X as the ctl device.

Gack.  I want some of the drugs these Alsa developers are using...

Cheers,

Jer

Reply via email to