summaryrefslogtreecommitdiffstats
path: root/src/pacat.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2004-07-07 22:02:15 +0000
committerLennart Poettering <lennart@poettering.net>2004-07-07 22:02:15 +0000
commit863fb90d90c2e57e60a0f5b81e0847319399b8ed (patch)
tree0b6bb67ccbd018ec8e9f97d9c225271aa087a466 /src/pacat.c
parente8d1185c4221fef9d712c1f375d8e592721b6943 (diff)
add output stream draining
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@53 fefdeb5f-60dc-0310-8127-8f9354f1896f
Diffstat (limited to 'src/pacat.c')
-rw-r--r--src/pacat.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/pacat.c b/src/pacat.c
index 75a94fc0..59ccc462 100644
--- a/src/pacat.c
+++ b/src/pacat.c
@@ -117,6 +117,18 @@ static void context_drain_complete(struct pa_context*c, void *userdata) {
quit(0);
}
+static void stream_drain_complete(struct pa_stream*s, void *userdata) {
+ fprintf(stderr, "Playback stream drained.\n");
+
+ pa_stream_free(stream);
+ stream = NULL;
+
+ if (pa_context_drain(context, context_drain_complete, NULL) < 0)
+ quit(0);
+ else
+ fprintf(stderr, "Draining connection to server.\n");
+}
+
static void stdin_callback(struct pa_mainloop_api*a, void *id, int fd, enum pa_mainloop_api_io_events events, void *userdata) {
size_t l, w = 0;
ssize_t r;
@@ -135,10 +147,7 @@ static void stdin_callback(struct pa_mainloop_api*a, void *id, int fd, enum pa_m
if ((r = read(fd, buffer, l)) <= 0) {
if (r == 0) {
fprintf(stderr, "Got EOF.\n");
- if (pa_context_drain(context, context_drain_complete, NULL) < 0)
- quit(0);
- else
- fprintf(stderr, "Draining connection to server.\n");
+ pa_stream_drain(stream, stream_drain_complete, NULL);
} else {
fprintf(stderr, "read() failed: %s\n", strerror(errno));
quit(1);