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;
|
||||
unsigned short revents;
|
||||
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);
|
||||
assert(err == 1);
|
||||
err_poll = poll(&pfd, 1, timeout);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue