From: Abramo Bagnara Date: Thu, 6 Jul 2000 17:20:49 +0000 (+0000) Subject: Fixed arecord bug wrt time limit X-Git-Tag: v1.0.3~347 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=c88189e490a2af66af0946c6302144b0d05c98d2;p=alsa-utils.git Fixed arecord bug wrt time limit --- diff --git a/TODO b/TODO index 725d5e4..fca3a57 100644 --- a/TODO +++ b/TODO @@ -1,2 +1 @@ -M Fix arecord timelimit bug M Write a *good* mixer diff --git a/aplay/aplay.c b/aplay/aplay.c index 76dec1e..f33f87e 100644 --- a/aplay/aplay.c +++ b/aplay/aplay.c @@ -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; } /*