mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-11-01 22:58:49 -04:00
pcm: fix snd_pcm_avail_delay() function
For capture stream, the delay must be obtained as last, but we need to update the ring buffer pointers for the avail_update call. So, rearrange the code a bit and add hwsync call as first. Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
parent
7c99bd24bc
commit
ba9332e919
1 changed files with 7 additions and 3 deletions
|
|
@ -2470,18 +2470,22 @@ int snd_pcm_avail_delay(snd_pcm_t *pcm,
|
|||
snd_pcm_sframes_t *delayp)
|
||||
{
|
||||
snd_pcm_sframes_t sf;
|
||||
int err;
|
||||
|
||||
assert(pcm && availp && delayp);
|
||||
if (CHECK_SANITY(! pcm->setup)) {
|
||||
SNDMSG("PCM not set up");
|
||||
return -EIO;
|
||||
}
|
||||
sf = pcm->fast_ops->delay(pcm->fast_op_arg, delayp);
|
||||
if (sf < 0)
|
||||
return (int)sf;
|
||||
err = pcm->fast_ops->hwsync(pcm->fast_op_arg);
|
||||
if (err < 0)
|
||||
return err;
|
||||
sf = pcm->fast_ops->avail_update(pcm->fast_op_arg);
|
||||
if (sf < 0)
|
||||
return (int)sf;
|
||||
err = pcm->fast_ops->delay(pcm->fast_op_arg, delayp);
|
||||
if (err < 0)
|
||||
return err;
|
||||
*availp = sf;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue