]> git.alsa-project.org Git - alsa-lib.git/commitdiff
pcm: plugin - optimize sync in snd_pcm_plugin_status()
authorJaroslav Kysela <perex@perex.cz>
Sun, 3 Jan 2021 15:41:29 +0000 (16:41 +0100)
committerJaroslav Kysela <perex@perex.cz>
Sun, 3 Jan 2021 15:41:32 +0000 (16:41 +0100)
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>
src/pcm/pcm_plugin.c

index 83793397a7f0e31779ab77aa510745c711ee122a..6a8151453efbf02ebe75e574339980efd83f765e 100644 (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;
 }