pcm: plugin - optimize sync in snd_pcm_plugin_status()

Do hw_ptr sync only once after the status call. This avoids
double update.

Also, the application pointer must not change when
the status is called. Add assert() call for this condition.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
Jaroslav Kysela 2021-01-03 16:41:29 +01:00
parent fa1895aa2b
commit 28cc099d9e

View file

@ -553,14 +553,11 @@ static int snd_pcm_plugin_status(snd_pcm_t *pcm, snd_pcm_status_t * status)
snd_pcm_plugin_t *plugin = pcm->private_data;
snd_pcm_sframes_t err;
/* sync with the latest hw and appl ptrs */
snd_pcm_plugin_avail_update(pcm);
err = snd_pcm_status(plugin->gen.slave, status);
if (err < 0)
return err;
status->appl_ptr = *pcm->appl.ptr;
status->hw_ptr = *pcm->hw.ptr;
assert(status->appl_ptr == *pcm->appl.ptr);
snd_pcm_plugin_sync_hw_ptr(pcm, status->hw_ptr, status->avail);
return 0;
}