Listen to the on_close callback. This still causes asserts in the mainloop, so this...
authorColin Guthrie <pulse@colin.guthr.ie>
Sun, 11 May 2008 14:19:41 +0000 (14:19 +0000)
committerColin Guthrie <pulse@colin.guthr.ie>
Wed, 8 Oct 2008 19:32:08 +0000 (20:32 +0100)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2403 fefdeb5f-60dc-0310-8127-8f9354f1896f

src/modules/module-raop-sink.c

index f6f93a4..090f04f 100644 (file)
@@ -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);