summaryrefslogtreecommitdiffstats
path: root/src/utils/pacat.c
diff options
context:
space:
mode:
authorPierre Ossman <ossman@cendio.se>2006-02-17 15:42:47 +0000
committerPierre Ossman <ossman@cendio.se>2006-02-17 15:42:47 +0000
commit45700da4ebf2986126d7a4d6889c028599fd3085 (patch)
tree8929a905c9e837eb2b5651df2df65e9e90243ba6 /src/utils/pacat.c
parent6f9a367abc8d8949e980d30645420fb31f8eb6af (diff)
Have a memblock queue on the client side during recording. This makes the
record callback optional in stead of mandatory. For applications that wish to retain the old behaviour, simply call pa_stream_peek() followed by pa_stream_drop() in the callback. git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@507 fefdeb5f-60dc-0310-8127-8f9354f1896f
Diffstat (limited to 'src/utils/pacat.c')
-rw-r--r--src/utils/pacat.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/utils/pacat.c b/src/utils/pacat.c
index 3c50402f..a3c3f2c8 100644
--- a/src/utils/pacat.c
+++ b/src/utils/pacat.c
@@ -105,14 +105,19 @@ static void stream_write_callback(pa_stream *s, size_t length, void *userdata) {
}
/* This is called whenever new data may is available */
-static void stream_read_callback(pa_stream *s, const void*data, size_t length, void *userdata) {
- assert(s && data && length);
+static void stream_read_callback(pa_stream *s, size_t length, void *userdata) {
+ assert(s && length);
+ void *data;
if (stdio_event)
mainloop_api->io_enable(stdio_event, PA_IO_EVENT_OUTPUT);
+ pa_stream_peek(s, &data, &length);
+ assert(data && length);
+
if (buffer) {
fprintf(stderr, "Buffer overrun, dropping incoming data\n");
+ pa_stream_drop(s);
return;
}
@@ -120,6 +125,7 @@ static void stream_read_callback(pa_stream *s, const void*data, size_t length, v
assert(buffer);
memcpy(buffer, data, length);
buffer_index = 0;
+ pa_stream_drop(s);
}
/* This routine is called whenever the stream state changes */