Hi,

I recently switched from OSS/Free to ALSA and everything but one thing was
working perfectly. I have an old sb16 card and I'm used to the fact that
if /dev/dsp is already used all new attempts to open it should fail
instead of just block until it's availiable. Then I found the 
snd_nonblock_open moduleparameter to snd-pcm-oss but it didn't work when
set to 1 (actually tried with 0 too). Here's a small patch to fix that
problem by making snd-pcm-oss always obey snd_nonblock_open unless the
nonblock parameter is already set to 1. It's just a simple cut-n-paste in
pcm_oss.c

Patch is attached, it works fine here.

/Martin

Never argue with an idiot. They drag you down to their level, then beat you with 
experience.
--- alsa-kernel/core/oss/pcm_oss.c.orig Mon Mar 18 23:30:15 2002
+++ alsa-kernel/core/oss/pcm_oss.c      Mon Mar 18 23:30:32 2002
@@ -1567,16 +1567,14 @@
                        nonblock = 1;
                else if (psetup->block)
                        nonblock = 0;
-               else if (!nonblock)
-                       nonblock = snd_nonblock_open;
        } else if (csetup && !csetup->disable) {
                if (csetup->nonblock)
                        nonblock = 1;
                else if (csetup->block)
                        nonblock = 0;
-               else if (!nonblock)
-                       nonblock = snd_nonblock_open;
        }
+       if (!nonblock)
+               nonblock = snd_nonblock_open;
 
        init_waitqueue_entry(&wait, current);
        add_wait_queue(&pcm->open_wait, &wait);

Reply via email to