summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorColin Guthrie <pulse@colin.guthr.ie>2008-05-11 14:19:41 +0000
committerColin Guthrie <pulse@colin.guthr.ie>2008-10-08 20:32:08 +0100
commitec9a618768790055fef00a46866b4e0e1fa33048 (patch)
tree6232194c8494e58f2408055ed8a1518b492a9bf9
parent899492c31581f5591cd9437052dda15ad02ec0ac (diff)
Listen to the on_close callback. This still causes asserts in the mainloop, so this is not a complete solution
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2403 fefdeb5f-60dc-0310-8127-8f9354f1896f
-rw-r--r--src/modules/module-raop-sink.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/modules/module-raop-sink.c b/src/modules/module-raop-sink.c
index f6f93a46..090f04fa 100644
--- a/src/modules/module-raop-sink.c
+++ b/src/modules/module-raop-sink.c
@@ -340,6 +340,14 @@ static void on_connection(PA_GCC_UNUSED int fd, void*userdata) {
pa_asyncmsgq_post(u->thread_mq.inq, PA_MSGOBJECT(u->sink), SINK_MESSAGE_PASS_SOCKET, NULL, 0, NULL, NULL);
}
+static void on_close(void*userdata) {
+ struct userdata *u = userdata;
+ pa_assert(u);
+
+ pa_log_debug("Control connection closed.");
+ pa_module_unload_request(u->module);
+}
+
int pa__init(pa_module*m) {
struct userdata *u = NULL;
const char *p;
@@ -420,6 +428,7 @@ int pa__init(pa_module*m) {
}
pa_raop_client_set_callback(u->raop, on_connection, u);
+ pa_raop_client_set_closed_callback(u->raop, on_close, u);
pa_sink_set_description(u->sink, t = pa_sprintf_malloc("Airtunes sink '%s'", p));
pa_xfree(t);