From 6b31f0908c87b27ce31ec69db25659c118ba71bc Mon Sep 17 00:00:00 2001 From: Jay Sorg Date: Sun, 28 Apr 2013 22:37:47 -0700 Subject: [PATCH] work on pulse sink, added close message --- module-xrdp-sink.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/module-xrdp-sink.c b/module-xrdp-sink.c index 92f4b67..bcab8f1 100644 --- a/module-xrdp-sink.c +++ b/module-xrdp-sink.c @@ -108,6 +108,8 @@ static const char* const valid_modargs[] = { NULL }; +static int close_send(struct userdata *u); + static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offset, pa_memchunk *chunk) { @@ -141,6 +143,7 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, u->timestamp = pa_rtclock_now(); } else { pa_log("sink_process_msg: not running"); + close_send(u); } break; @@ -330,6 +333,28 @@ static int data_send(struct userdata *u, pa_memchunk *chunk) { return sent; } +static int close_send(struct userdata *u) { + struct header h; + + pa_log("close_send:"); + if (u->fd == 0) { + return 0; + } + + h.code = 1; + h.bytes = 8; + if (send(u->fd, &h, 8, 0) != 8) { + pa_log("close_send: send failed"); + close(u->fd); + u->fd = 0; + return 0; + } else { + //pa_log("close_send: sent header ok"); + } + + return 8; +} + static void process_render(struct userdata *u, pa_usec_t now) { pa_memchunk chunk; int request_bytes;