diff options
author | Lennart Poettering <lennart@poettering.net> | 2004-07-07 22:02:15 +0000 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2004-07-07 22:02:15 +0000 |
commit | 863fb90d90c2e57e60a0f5b81e0847319399b8ed (patch) | |
tree | 0b6bb67ccbd018ec8e9f97d9c225271aa087a466 /src/pacat.c | |
parent | e8d1185c4221fef9d712c1f375d8e592721b6943 (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.c | 17 |
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); |