From: Abramo Bagnara Date: Mon, 5 Feb 2001 09:35:17 +0000 (+0000) Subject: Fixed repeated prepare call X-Git-Tag: v1.0.3~989 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=a83b209df2e93743487512b4b5078eef1a7c9093;p=alsa-lib.git Fixed repeated prepare call --- diff --git a/src/pcm/pcm_file.c b/src/pcm/pcm_file.c index 6c0407de..9e461b1c 100644 --- a/src/pcm/pcm_file.c +++ b/src/pcm/pcm_file.c @@ -307,7 +307,7 @@ static int snd_pcm_file_hw_params(snd_pcm_t *pcm, snd_pcm_hw_params_t * params) snd_pcm_file_t *file = pcm->private; unsigned int channel; snd_pcm_t *slave = file->slave; - int err = snd_pcm_hw_params(slave, params); + int err = _snd_pcm_hw_params(slave, params); if (err < 0) return err; file->buffer_bytes = snd_pcm_frames_to_bytes(slave, slave->buffer_size); diff --git a/src/pcm/pcm_local.h b/src/pcm/pcm_local.h index 761953b2..01bb67c7 100644 --- a/src/pcm/pcm_local.h +++ b/src/pcm/pcm_local.h @@ -336,6 +336,7 @@ static inline int muldiv_near(int a, int b, int c) return n; } +int _snd_pcm_hw_params(snd_pcm_t *pcm, snd_pcm_hw_params_t *params); int snd_pcm_hw_refine_soft(snd_pcm_t *pcm, snd_pcm_hw_params_t *params); int snd_pcm_hw_refine_slave(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, int (*cprepare)(snd_pcm_t *pcm, diff --git a/src/pcm/pcm_params.c b/src/pcm/pcm_params.c index a1d8816d..14aa8871 100644 --- a/src/pcm/pcm_params.c +++ b/src/pcm/pcm_params.c @@ -2099,7 +2099,7 @@ int snd_pcm_hw_refine(snd_pcm_t *pcm, snd_pcm_hw_params_t *params) max periods Return 0 on success or a negative number expressing the error. */ -int snd_pcm_hw_params(snd_pcm_t *pcm, snd_pcm_hw_params_t *params) +int _snd_pcm_hw_params(snd_pcm_t *pcm, snd_pcm_hw_params_t *params) { int err; snd_pcm_sw_params_t sw; @@ -2154,6 +2154,14 @@ int snd_pcm_hw_params(snd_pcm_t *pcm, snd_pcm_hw_params_t *params) pcm->access == SND_PCM_ACCESS_MMAP_COMPLEX) { err = snd_pcm_mmap(pcm); } + return err; +} + +int snd_pcm_hw_params(snd_pcm_t *pcm, snd_pcm_hw_params_t *params) +{ + int err; + assert(pcm && params); + err = _snd_pcm_hw_params(pcm, params); if (err >= 0) err = snd_pcm_prepare(pcm); return err; diff --git a/src/pcm/pcm_plug.c b/src/pcm/pcm_plug.c index 7cc5f43a..382a45db 100644 --- a/src/pcm/pcm_plug.c +++ b/src/pcm/pcm_plug.c @@ -583,7 +583,7 @@ static int snd_pcm_plug_hw_params(snd_pcm_t *pcm, snd_pcm_hw_params_t *params) return err; } slave = plug->slave; - err = snd_pcm_hw_params(slave, params); + err = _snd_pcm_hw_params(slave, params); if (err < 0) { snd_pcm_plug_clear(pcm); return err; diff --git a/src/pcm/pcm_plugin.c b/src/pcm/pcm_plugin.c index 201b0a06..af7ab11e 100644 --- a/src/pcm/pcm_plugin.c +++ b/src/pcm/pcm_plugin.c @@ -349,7 +349,7 @@ int snd_pcm_plugin_hw_refine_slave(snd_pcm_t *pcm, snd_pcm_hw_params_t *params) int snd_pcm_plugin_hw_params_slave(snd_pcm_t *pcm, snd_pcm_hw_params_t *params) { snd_pcm_plugin_t *plugin = pcm->private; - return snd_pcm_hw_params(plugin->slave, params); + return _snd_pcm_hw_params(plugin->slave, params); } snd_pcm_fast_ops_t snd_pcm_plugin_fast_ops = { diff --git a/src/pcm/pcm_share.c b/src/pcm/pcm_share.c index 97ca6338..4a2a1732 100644 --- a/src/pcm/pcm_share.c +++ b/src/pcm/pcm_share.c @@ -570,7 +570,7 @@ static int snd_pcm_share_hw_refine_slave(snd_pcm_t *pcm, snd_pcm_hw_params_t *pa static int snd_pcm_share_hw_params_slave(snd_pcm_t *pcm, snd_pcm_hw_params_t *params) { snd_pcm_share_t *share = pcm->private; - return snd_pcm_hw_params(share->slave->pcm, params); + return _snd_pcm_hw_params(share->slave->pcm, params); } static int snd_pcm_share_hw_refine(snd_pcm_t *pcm, snd_pcm_hw_params_t *params)