On Tue, 03 Jul 2018 14:23:59 +0200, twischer@de.adit-jv.com wrote:
From: Timo Wischer twischer@de.adit-jv.com
snd_pcm_avail_update() can call snd_pcm_jack_stop() but snd_pcm_jack_stop() should not be called by the JACK thread. It should only be called by the thread how has called snd_pcm_jack_start().
In addition the execution of snd_pcm_avail_update() can take a while. Therefore it should not be called by the JACK thread to not block this thread.
Signed-off-by: Timo Wischer twischer@de.adit-jv.com
Please put "v2" into the subject prefix, and give a brief information what changed from v1 to v2. And, don't attach to the old mail thread. As of this post, it's utterly confusing which patch is which version!
thanks,
Takashi
diff --git a/jack/pcm_jack.c b/jack/pcm_jack.c index e3df4d2..5a57e13 100644 --- a/jack/pcm_jack.c +++ b/jack/pcm_jack.c @@ -62,13 +62,13 @@ static int snd_pcm_jack_stop(snd_pcm_ioplug_t *io); static int pcm_poll_block_check(snd_pcm_ioplug_t *io) { static char buf[32];
- snd_pcm_sframes_t avail;
snd_pcm_uframes_t avail; snd_pcm_jack_t *jack = io->private_data;
if (io->state == SND_PCM_STATE_RUNNING || (io->state == SND_PCM_STATE_PREPARED && io->stream == SND_PCM_STREAM_CAPTURE)) {
avail = snd_pcm_avail_update(io->pcm);
if (avail >= 0 && avail < jack->min_avail) {
avail = snd_pcm_ioplug_avail(io, jack->hw_ptr, io->appl_ptr);
if (avail < jack->min_avail) { while (read(io->poll_fd, &buf, sizeof(buf)) == sizeof(buf)) ; return 1;
@@ -81,11 +81,11 @@ static int pcm_poll_block_check(snd_pcm_ioplug_t *io) static int pcm_poll_unblock_check(snd_pcm_ioplug_t *io) { static char buf[1];
- snd_pcm_sframes_t avail;
- snd_pcm_uframes_t avail; snd_pcm_jack_t *jack = io->private_data;
- avail = snd_pcm_avail_update(io->pcm);
- if (avail < 0 || avail >= jack->min_avail) {
- avail = snd_pcm_ioplug_avail(io, jack->hw_ptr, io->appl_ptr);
- if (avail >= jack->min_avail) { write(jack->fd, &buf, 1); return 1; }
-- 2.7.4
Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel