From f9c7321670f2757b02b0f17a0460ce0b39541127 Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Mon, 20 Feb 2006 19:34:45 +0000 Subject: [PATCH] Fix infinite loop in snd_pcm_wait() Fix possible infinite loop in snd_pcm_wait() with direct plugins when XRUN occurs during poll. --- src/pcm/pcm_direct.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/pcm/pcm_direct.c b/src/pcm/pcm_direct.c index a136caa8..8be4d2a5 100644 --- a/src/pcm/pcm_direct.c +++ b/src/pcm/pcm_direct.c @@ -569,6 +569,15 @@ int snd_pcm_direct_poll_revents(snd_pcm_t *pcm, struct pollfd *pfds, unsigned in if (empty) { snd_pcm_direct_clear_timer_queue(dmix); events &= ~(POLLOUT|POLLIN); + /* additional check */ + switch (snd_pcm_state(pcm)) { + case SND_PCM_STATE_XRUN: + case SND_PCM_STATE_SUSPENDED: + events |= POLLERR; + break; + default: + break; + } } break; } -- 2.47.1