]> git.alsa-project.org Git - alsa-utils.git/commitdiff
Fixed arecord bug wrt time limit
authorAbramo Bagnara <abramo@alsa-project.org>
Thu, 6 Jul 2000 17:20:49 +0000 (17:20 +0000)
committerAbramo Bagnara <abramo@alsa-project.org>
Thu, 6 Jul 2000 17:20:49 +0000 (17:20 +0000)
TODO
aplay/aplay.c

diff --git a/TODO b/TODO
index 725d5e4368bba50d9a7ebbe6789dc30c63d5b7b5..fca3a5700154b393dff72ecdbb8cc61c0ba4c029 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,2 +1 @@
-M Fix arecord timelimit bug
 M Write a *good* mixer
index 76dec1e27990ae798ce5a5e0207e719ed901bfab..f33f87ebb64e2731fcb0af959d2330efbb6a61f7 100644 (file)
@@ -972,10 +972,16 @@ static ssize_t pcm_writev(u_char **data, unsigned int channels, size_t count)
  *  read function
  */
 
-static ssize_t pcm_read(u_char *data, size_t count)
+static ssize_t pcm_read(u_char *data, size_t rcount)
 {
        ssize_t r;
        size_t result = 0;
+       size_t count = rcount;
+
+       if (mode == SND_PCM_MODE_FRAGMENT &&
+           count != buffer_size) {
+               count = buffer_size;
+       }
 
        while (count > 0) {
                r = read_func(handle, data, count);
@@ -996,13 +1002,19 @@ static ssize_t pcm_read(u_char *data, size_t count)
                        data += r * bits_per_frame / 8;
                }
        }
-       return result;
+       return rcount;
 }
 
-static ssize_t pcm_readv(u_char **data, unsigned int channels, size_t count)
+static ssize_t pcm_readv(u_char **data, unsigned int channels, size_t rcount)
 {
        ssize_t r;
        size_t result = 0;
+       size_t count = rcount;
+
+       if (mode == SND_PCM_MODE_FRAGMENT &&
+           count != buffer_size) {
+               count = buffer_size;
+       }
 
        while (count > 0) {
                unsigned int channel;
@@ -1030,7 +1042,7 @@ static ssize_t pcm_readv(u_char **data, unsigned int channels, size_t count)
                        count -= r;
                }
        }
-       return result;
+       return rcount;
 }
 
 /*