Update of /cvsroot/alsa/alsa-lib/src/pcm/ext
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20967/ext

Modified Files:
        pcm_jack.c 
Log Message:
Michel Daenzer <[EMAIL PROTECTED]>:

This patch changes the JACK plugin to use a unique client name, which
allows for multiple ALSA streams to share a JACK server.



Index: pcm_jack.c
===================================================================
RCS file: /cvsroot/alsa/alsa-lib/src/pcm/ext/pcm_jack.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- pcm_jack.c  28 Oct 2003 18:19:09 -0000      1.4
+++ pcm_jack.c  5 Feb 2004 11:48:19 -0000       1.5
@@ -483,9 +483,9 @@
 
 static snd_pcm_sframes_t snd_pcm_jack_avail_update(snd_pcm_t *pcm)
 {
-       snd_pcm_jack_t *jack = pcm->private_data;
        snd_pcm_sframes_t ret = snd_pcm_mmap_avail(pcm);
 #ifdef PCM_JACK_DEBUG
+       snd_pcm_jack_t *jack = pcm->private_data;
        printf("snd_pcm_jack_avail_update appl=%d hw=%d 
ret=%d\n",(int)jack->appl_ptr,(int)jack->hw_ptr,(int)ret); fflush(stdout);
 #endif
        return ret;
@@ -697,6 +697,8 @@
        snd_pcm_jack_t *jack;
        int err;
        int fd[2];
+       static unsigned int num = 0;
+       char jack_client_name[32];
        
        assert(pcmp);
 #ifdef PCM_JACK_DEBUG
@@ -723,11 +725,9 @@
 
        if (stream == SND_PCM_STREAM_PLAYBACK) {
                jack->channels = jack->playback_ports_n;
-               jack->client = jack_client_new("alsaP");
        }
        else {
                jack->channels = jack->capture_ports_n;
-               jack->client = jack_client_new("alsaC");
        }
 
        if (jack->channels == 0) {
@@ -735,6 +735,15 @@
                goto _free;
        }
 
+       if (snprintf(jack_client_name, sizeof(jack_client_name), "alsa%s.%d.%d",
+                    stream == SND_PCM_STREAM_PLAYBACK ? "P" : "C", getpid(), num++)
+           >= (int)sizeof(jack_client_name)) {
+               fprintf(stderr, "%s: WARNING: JACK client name '%s' truncated to %d 
characters, might not be unique\n",
+                       __func__, jack_client_name, strlen(jack_client_name));
+       }
+
+       jack->client = jack_client_new(jack_client_name);
+
        if (jack->client==0) {
                err = -ENOENT;  
                goto _free;



-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004
Premiere Conference on Open Tools Development and Integration
See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog

Reply via email to