From: Takashi Iwai Date: Mon, 20 Feb 2006 19:34:45 +0000 (+0000) Subject: Fix infinite loop in snd_pcm_wait() X-Git-Tag: v1.0.11rc4~26 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=f9c7321670f2757b02b0f17a0460ce0b39541127;p=alsa-lib.git Fix infinite loop in snd_pcm_wait() Fix possible infinite loop in snd_pcm_wait() with direct plugins when XRUN occurs during poll. --- 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; }