I have a program which, among other things, plays audio. Works fine on
i386 (both 3.1 and my old 1.4T). But when I tried to run it on my
shark (also 3.1), I had trouble.
First time I run it after boot, it starts up fine. But if I exit and
then restart, it fails when trying to open /dev/sound; the open call
shows EINVAL. Adding debugging printfs to the kernel, I find that the
call to hw->set_params inside autiosetinfo() is failing. Resetting the
audio playback state with "sh -c '< /dev/audio'" (/dev/audio being the
reset-on-open device) brings it back into a state where it can open
It seems to me there's surely something broken if it can set a
particular state with AUDIO_SETINFO while the device is open, but it
can't set the same state on open.
In case it matters, here's a diff between audioctl -a output in the
before ("working") and after ("broken") states.
Any ideas what's wrong, and what to do about it? (I'm going to try
making the program open /dev/audio instead, since it sets its own state
anyway and thus doesn't care whether state is reset on open. But that
feels to me like a workaround, not a fix.)
/~\ The ASCII Mouse
\ / Ribbon Campaign
X Against HTML [email protected]
/ \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B