Well, I poked at it a bit and quickly noticed a 'half duplex'
option for dsps...  While I'm not an ALSA programmer, and don't
know if this is the correct fix, I do know it's making things
work more like I would expect them to :/

Patch is attached.



On Thu, Jul 31, 2003 at 06:57:14AM -0500, Zinx Verituse wrote:
> Appologies if this has been answered before, but I have a dsp
> with no capture device (it's the primary(secondary?) on a
> ens1370), and haven't been able to get quake3 based engines to
> open it..
> 
> echo "quake3.x86 0 0 disable" > /proc/asound/card0/pcm1c/oss
> 
> The above can't work, because no capture device exists, and
> it seems to try opening with capture enabled if the capture
> device doesn't exist:  It returns 'No such device' on the open
> of /dev/adsp, though sox will play to /dev/adsp fine.
> 
> I also tried disabling the capture device that does exist
> (via /proc/asound/card0/pcm0c/oss) for the game -- It produced
> no noticable results (i.e., still returns 'No such device')
> 
> I attempted hacking the binary to open /dev/adsp as O_WRONLY,
> but as you can imagine this resulted in the mmap failing..
> 
> So.. Is there any way to make alsa's OSS emulation realize the
> application isn't going to use the capture when there is _no_
> capture device?

-- 
Zinx Verituse
--- linux-2.6.0-test2.orig/sound/pci/ens1370.c  2003-07-27 12:07:27.000000000 -0500
+++ linux-2.6.0-test2/sound/pci/ens1370.c       2003-07-31 07:05:29.000000000 -0500
@@ -1258,7 +1258,7 @@
 #endif
        pcm->private_data = ensoniq;
        pcm->private_free = snd_ensoniq_pcm_free2;
-       pcm->info_flags = 0;
+       pcm->info_flags = SNDRV_PCM_INFO_HALF_DUPLEX;
 #ifdef CHIP1370
        strcpy(pcm->name, "ES1370 DAC1");
 #else

Reply via email to