]> git.alsa-project.org Git - alsa-lib.git/commitdiff
Avoided useless writev use
authorAbramo Bagnara <abramo@alsa-project.org>
Thu, 13 Apr 2000 11:45:39 +0000 (11:45 +0000)
committerAbramo Bagnara <abramo@alsa-project.org>
Thu, 13 Apr 2000 11:45:39 +0000 (11:45 +0000)
src/pcm/plugin/block.c
src/pcm/plugin/stream.c

index 6c0e609ec3723d62a5a89b231ece0a6ef0185e30..c0fea45b55aa8c0c3d03efd6697e0e7f90658724 100644 (file)
@@ -57,9 +57,7 @@ static ssize_t block_transfer(snd_pcm_plugin_t *plugin,
                if ((result = snd_pcm_plugin_src_samples_to_size(plugin, samples)) < 0)
                        return result;
                if (plugin->src_format.interleave) {
-                       vec->iov_base = src_voices->addr;
-                       vec->iov_len = result;
-                       count = 1;
+                       result = snd_pcm_write(plugin->handle, src_voices->addr, result);
                } else {
                        count = plugin->src_format.voices;
                        result /= count;
@@ -67,8 +65,8 @@ static ssize_t block_transfer(snd_pcm_plugin_t *plugin,
                                vec[voice].iov_base = src_voices[voice].addr;
                                vec[voice].iov_len = result;
                        }
+                       result = snd_pcm_writev(plugin->handle, vec, count);
                }
-               result = snd_pcm_writev(plugin->handle, vec, count);
                if (result < 0)
                        return result;
                return snd_pcm_plugin_src_size_to_samples(plugin, result);
@@ -78,9 +76,7 @@ static ssize_t block_transfer(snd_pcm_plugin_t *plugin,
                if ((result = snd_pcm_plugin_dst_samples_to_size(plugin, samples)) < 0)
                        return result;
                if (plugin->dst_format.interleave) {
-                       vec->iov_base = dst_voices->addr;
-                       vec->iov_len = result;
-                       count = 1;
+                       result = snd_pcm_read(plugin->handle, dst_voices->addr, result);
                } else {
                        count = plugin->dst_format.voices;
                        result /= count;
@@ -88,8 +84,8 @@ static ssize_t block_transfer(snd_pcm_plugin_t *plugin,
                                vec[voice].iov_base = dst_voices[voice].addr;
                                vec[voice].iov_len = result;
                        }
+                       result = snd_pcm_readv(plugin->handle, vec, count);
                }
-               result = snd_pcm_readv(plugin->handle, vec, count);
                return snd_pcm_plugin_dst_size_to_samples(plugin, result);
        } else {
                return -EINVAL;
index 963a6973bf1aa8ab27e3dadfe32739c603c51ec1..68c0db877ca6bfa1e7e483e714b1f29db1de1f01 100644 (file)
@@ -57,9 +57,7 @@ static ssize_t stream_transfer(snd_pcm_plugin_t *plugin,
                if ((result = snd_pcm_plugin_src_samples_to_size(plugin, samples)) < 0)
                        return result;
                if (plugin->src_format.interleave) {
-                       vec->iov_base = src_voices->addr;
-                       vec->iov_len = result;
-                       count = 1;
+                       result = snd_pcm_write(plugin->handle, src_voices->addr, result);
                } else {
                        count = plugin->src_format.voices;
                        result /= count;
@@ -67,8 +65,8 @@ static ssize_t stream_transfer(snd_pcm_plugin_t *plugin,
                                vec[voice].iov_base = src_voices[voice].addr;
                                vec[voice].iov_len = result;
                        }
+                       result = snd_pcm_writev(plugin->handle, vec, count);
                }
-               result = snd_pcm_writev(plugin->handle, vec, count);
                if (result < 0)
                        return result;
                return snd_pcm_plugin_src_size_to_samples(plugin, result);
@@ -78,9 +76,8 @@ static ssize_t stream_transfer(snd_pcm_plugin_t *plugin,
                if ((result = snd_pcm_plugin_dst_samples_to_size(plugin, samples)) < 0)
                        return result;
                if (plugin->dst_format.interleave) {
-                       vec->iov_base = dst_voices->addr;
-                       vec->iov_len = result;
-                       count = 1;
+                       result = snd_pcm_read(plugin->handle, dst_voices->addr, result);
+                       
                } else {
                        count = plugin->dst_format.voices;
                        result /= count;
@@ -88,8 +85,8 @@ static ssize_t stream_transfer(snd_pcm_plugin_t *plugin,
                                vec[voice].iov_base = dst_voices[voice].addr;
                                vec[voice].iov_len = result;
                        }
+                       result = snd_pcm_readv(plugin->handle, vec, count);
                }
-               result = snd_pcm_readv(plugin->handle, vec, count);
                return snd_pcm_plugin_dst_size_to_samples(plugin, result);
        } else {
                return -EINVAL;