mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-10-31 22:25:35 -04:00
Finer sync of dmix in delay callback
Sync pointers in delay callback in dmix. This solves some problems of aoss with apps that don't check poll_revents. The rate plugin is fixed to call delay of slave appropriately, too.
This commit is contained in:
parent
a2ee8e20e8
commit
4c06a75a2f
2 changed files with 6 additions and 0 deletions
|
|
@ -437,6 +437,7 @@ static int snd_pcm_dmix_delay(snd_pcm_t *pcm, snd_pcm_sframes_t *delayp)
|
|||
if (err < 0)
|
||||
return err;
|
||||
/* fallthru */
|
||||
snd_pcm_dmix_sync_area(pcm);
|
||||
case SNDRV_PCM_STATE_PREPARED:
|
||||
case SNDRV_PCM_STATE_SUSPENDED:
|
||||
case STATE_RUN_PENDING:
|
||||
|
|
|
|||
|
|
@ -617,7 +617,12 @@ static int snd_pcm_rate_hwsync(snd_pcm_t *pcm)
|
|||
|
||||
static int snd_pcm_rate_delay(snd_pcm_t *pcm, snd_pcm_sframes_t *delayp)
|
||||
{
|
||||
snd_pcm_rate_t *rate = pcm->private_data;
|
||||
snd_pcm_rate_hwsync(pcm);
|
||||
/* call slave's delay callback although the value is overwritten.
|
||||
* it's needed for a better sync of dmix on aoss.
|
||||
*/
|
||||
snd_pcm_delay(rate->gen.slave, delayp);
|
||||
if (pcm->stream == SND_PCM_STREAM_PLAYBACK)
|
||||
*delayp = snd_pcm_mmap_playback_hw_avail(pcm);
|
||||
else
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue