diff options
author | Colin Guthrie <pulse@colin.guthr.ie> | 2008-07-30 23:43:45 +0100 |
---|---|---|
committer | Colin Guthrie <pulse@colin.guthr.ie> | 2008-07-30 23:43:45 +0100 |
commit | b30a5d601eaffd98914ca0b9fdecd863eade0b4f (patch) | |
tree | 2bf5dfaa46b8e1733311562dba299709a0a3228e /src/modules/module-hal-detect.c | |
parent | 0e1936fd56ad51509424f3eca06fe3a442b4dc9c (diff) | |
parent | 0b428e7cb1efdd7330b89a9855f08c45bfa98307 (diff) |
Merge branch 'master' of git://git.0pointer.de/pulseaudio
Diffstat (limited to 'src/modules/module-hal-detect.c')
-rw-r--r-- | src/modules/module-hal-detect.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/modules/module-hal-detect.c b/src/modules/module-hal-detect.c index 19430a3d..ab5b206f 100644 --- a/src/modules/module-hal-detect.c +++ b/src/modules/module-hal-detect.c @@ -615,6 +615,8 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *message, vo device_added_cb(u->context, udi); } + return DBUS_HANDLER_RESULT_HANDLED; + } else if (dbus_message_is_signal(message, "org.pulseaudio.Server", "DirtyGiveUpMessage")) { /* We use this message to avoid a dirty race condition when we get an ACLAdded message before the previously owning PA @@ -661,12 +663,14 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *message, vo } else /* Yes, we don't check the UDI for validity, but hopefully HAL will */ device_added_cb(u->context, udi); + + return DBUS_HANDLER_RESULT_HANDLED; } finish: dbus_error_free(&error); - return DBUS_HANDLER_RESULT_HANDLED; + return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } static void hal_context_free(LibHalContext* hal_context) { @@ -842,8 +846,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); } |