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>
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;
}