]> git.alsa-project.org Git - alsa-lib.git/commitdiff
Fixed repeated prepare call
authorAbramo Bagnara <abramo@alsa-project.org>
Mon, 5 Feb 2001 09:35:17 +0000 (09:35 +0000)
committerAbramo Bagnara <abramo@alsa-project.org>
Mon, 5 Feb 2001 09:35:17 +0000 (09:35 +0000)
src/pcm/pcm_file.c
src/pcm/pcm_local.h
src/pcm/pcm_params.c
src/pcm/pcm_plug.c
src/pcm/pcm_plugin.c
src/pcm/pcm_share.c

index 6c0407dec092b523a82545feae113c411e86ff80..9e461b1ca73e33fdf0950c6082715d89d7373b73 100644 (file)
@@ -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);
index 761953b22e0aac0732b3699b596e3c1985162efd..01bb67c763b622e5b938bd98cca6dfbebb5f6c1a 100644 (file)
@@ -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,
index a1d8816dce9a8181f3e88cbc7e88ca5dfa37d89a..14aa88719ec24e58fc90ad2bfa73fb30da39c23a 100644 (file)
@@ -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;
index 7cc5f43a60d84fd8ec0032fd4d293ccf2008119d..382a45dbae1ca1753b7e26b6e4f34f34aab81b7e 100644 (file)
@@ -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;
index 201b0a066779a276fa71a11077c7b37318da8d9a..af7ab11e6041a87d9f889dc5e3ae454a596fb972 100644 (file)
@@ -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 = {
index 97ca63382b6774b2301b03b02efccff2fa56b7b3..4a2a173288f6a43fe930ab7e2e14d366f51d925f 100644 (file)
@@ -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)