From cf956e032be36c90166b46021299481583226aa1 Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Thu, 5 Feb 2004 11:48:19 +0000 Subject: [PATCH] Michel Daenzer : This patch changes the JACK plugin to use a unique client name, which allows for multiple ALSA streams to share a JACK server. --- src/pcm/ext/pcm_jack.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/pcm/ext/pcm_jack.c b/src/pcm/ext/pcm_jack.c index 32a3dd40..61802e2c 100644 --- a/src/pcm/ext/pcm_jack.c +++ b/src/pcm/ext/pcm_jack.c @@ -483,9 +483,9 @@ static snd_pcm_sframes_t snd_pcm_jack_mmap_commit(snd_pcm_t *pcm, 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 @@ int snd_pcm_jack_open(snd_pcm_t **pcmp, const char *name, 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 @@ int snd_pcm_jack_open(snd_pcm_t **pcmp, const char *name, 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 @@ int snd_pcm_jack_open(snd_pcm_t **pcmp, const char *name, 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; -- 2.47.1