]> code.delx.au - pulseaudio/commitdiff
fix destruction of dbus modules: make sure we don't leave filter function registered...
authorLennart Poettering <lennart@poettering.net>
Thu, 24 Jul 2008 00:21:58 +0000 (02:21 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 24 Jul 2008 00:21:58 +0000 (02:21 +0200)
src/modules/module-bt-proximity.c
src/modules/module-console-kit.c
src/modules/module-hal-detect.c

index 77b9586819f6c8662a21d14902f45d9656f130c2..f924c3cb4eb0d76709a36ea26cc857ea69706113 100644 (file)
@@ -358,7 +358,6 @@ static int add_matches(struct userdata *u, pa_bool_t add) {
     } else
         dbus_bus_remove_match(pa_dbus_connection_get(u->dbus_connection), filter2, &e);
 
-
     if (add)
         pa_assert_se(dbus_connection_add_filter(pa_dbus_connection_get(u->dbus_connection), filter_func, u, NULL));
     else
index 829b43b12ab152009615f7d6583b59f63f858561..3578212e0e4a7c94088d92f978cc3ee55403d573 100644 (file)
@@ -341,8 +341,17 @@ void pa__done(pa_module *m) {
         pa_hashmap_free(u->sessions, NULL, NULL);
     }
 
-    if (u->connection)
+    if (u->connection) {
+        DBusError error;
+        dbus_error_init(&error);
+
+        dbus_bus_remove_match(pa_dbus_connection_get(u->connection), "type='signal',sender='org.freedesktop.ConsoleKit', interface='org.freedesktop.ConsoleKit.Seat'", &error);
+        dbus_error_free(&error);
+
+        dbus_connection_remove_filter(pa_dbus_connection_get(u->connection), filter_cb, u);
+
         pa_dbus_connection_unref(u->connection);
+    }
 
     pa_xfree(u);
 }
index 19430a3d85aeeb5d4ed4df1042b3c3ec9019b916..ec0649616fe9650951c025cdd8a4ef05aee81c3b 100644 (file)
@@ -842,8 +842,20 @@ void pa__done(pa_module *m) {
     if (u->devices)
         pa_hashmap_free(u->devices, hal_device_free_cb, NULL);
 
-    if (u->connection)
+    if (u->connection) {
+        DBusError error;
+        dbus_error_init(&error);
+
+        dbus_bus_remove_match(pa_dbus_connection_get(u->connection), "type='signal',sender='org.freedesktop.Hal', interface='org.freedesktop.Hal.Device.AccessControl'", &error);
+        dbus_error_free(&error);
+
+        dbus_bus_remove_match(pa_dbus_connection_get(u->connection), "type='signal',interface='org.pulseaudio.Server'", &error);
+        dbus_error_free(&error);
+
+        dbus_connection_remove_filter(pa_dbus_connection_get(u->connection), filter_cb, u);
+
         pa_dbus_connection_unref(u->connection);
+    }
 
     pa_xfree(u);
 }