At Thu, 13 May 2004 20:06:45 +0200,
I wrote:
> 
> [1  <text/plain; US-ASCII (7bit)>]
> At Thu, 13 May 2004 10:53:48 -0700,
> Loc Ho wrote:
> > 
> > Hi,
> > 
> > Also, after looking at the snd memory allocation routines, the
> > unique tag are type, id, and flag. The type is "continous". The id is
> > formated by the device ID, stream number, and substream number. The
> > flag is the kernel memory flag. I already discussed the ID in my
> > previous email (see below). Therefore, it will NOT be unique across
> > multiple card!!!  
> 
> hmm, you're right.
> 
> obviously it's a bug of snd-usb-audio.
> the attached patch should fix the problem.

maybe this one is better.
i'll commit this to cvs.
        

Takashi
Index: alsa-kernel/core/pcm_memory.c
===================================================================
RCS file: /suse/tiwai/cvs/alsa/alsa-kernel/core/pcm_memory.c,v
retrieving revision 1.25
diff -u -r1.25 pcm_memory.c
--- alsa-kernel/core/pcm_memory.c       7 Apr 2004 17:49:39 -0000       1.25
+++ alsa-kernel/core/pcm_memory.c       13 May 2004 18:16:27 -0000
@@ -224,9 +224,13 @@
  */
 static inline void setup_pcm_id(snd_pcm_substream_t *subs)
 {
-       if (! subs->dma_device.id)
+       if (! subs->dma_device.id) {
                subs->dma_device.id = subs->pcm->device << 16 |
                        subs->stream << 8 | (subs->number + 1);
+               if (subs->dma_device.type == SNDRV_DMA_TYPE_CONTINUOUS ||
+                   subs->dma_device.dev == NULL)
+                       subs->dma_device.id |= (subs->pcm->card->number + 1) << 24;
+       }
 }
 
 /**

Reply via email to