mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-10-31 22:25:35 -04:00
Added mmap_avail() check to snd_pcm_wait() function
This commit is contained in:
parent
7c201b510a
commit
f70e0fd468
1 changed files with 14 additions and 0 deletions
|
|
@ -2066,6 +2066,20 @@ int snd_pcm_wait(snd_pcm_t *pcm, int timeout)
|
||||||
struct pollfd pfd;
|
struct pollfd pfd;
|
||||||
unsigned short revents;
|
unsigned short revents;
|
||||||
int err, err_poll;
|
int err, err_poll;
|
||||||
|
|
||||||
|
if (snd_pcm_mmap_avail(pcm) >= pcm->avail_min) {
|
||||||
|
/* check more precisely */
|
||||||
|
switch (snd_pcm_state(pcm)) {
|
||||||
|
case SND_PCM_STATE_XRUN:
|
||||||
|
return -EPIPE;
|
||||||
|
case SND_PCM_STATE_SUSPENDED:
|
||||||
|
return -ESTRPIPE;
|
||||||
|
case SND_PCM_STATE_DISCONNECTED:
|
||||||
|
return -ENOTTY; /* linux VFS does this? */
|
||||||
|
default:
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
err = snd_pcm_poll_descriptors(pcm, &pfd, 1);
|
err = snd_pcm_poll_descriptors(pcm, &pfd, 1);
|
||||||
assert(err == 1);
|
assert(err == 1);
|
||||||
err_poll = poll(&pfd, 1, timeout);
|
err_poll = poll(&pfd, 1, timeout);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue