From 6e5f78e0af1bf4aff4afe942f57c7d801a233366 Mon Sep 17 00:00:00 2001 From: Mikel Astiz Date: Fri, 19 Oct 2012 10:11:25 +0200 Subject: [PATCH] bluetooth: Add hook to tell transport was removed Add a hook to report that the transport was removed from D-Bus, and thus references to it should be released. --- src/modules/bluetooth/bluetooth-util.c | 5 ++++- src/modules/bluetooth/bluetooth-util.h | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/modules/bluetooth/bluetooth-util.c b/src/modules/bluetooth/bluetooth-util.c index 0482c16..f4f60c4 100644 --- a/src/modules/bluetooth/bluetooth-util.c +++ b/src/modules/bluetooth/bluetooth-util.c @@ -157,8 +157,10 @@ static void device_free(pa_bluetooth_device *d) { pa_assert(d); - while ((t = pa_hashmap_steal_first(d->transports))) + while ((t = pa_hashmap_steal_first(d->transports))) { + pa_hook_fire(&t->hooks[PA_BLUETOOTH_TRANSPORT_HOOK_REMOVED], NULL); transport_free(t); + } pa_hashmap_free(d->transports, NULL, NULL); @@ -1188,6 +1190,7 @@ static DBusMessage *endpoint_clear_configuration(DBusConnection *c, DBusMessage if ((t = pa_hashmap_get(d->transports, path))) { pa_log_debug("Clearing transport %s profile %d", t->path, t->profile); pa_hashmap_remove(d->transports, t->path); + pa_hook_fire(&t->hooks[PA_BLUETOOTH_TRANSPORT_HOOK_REMOVED], NULL); transport_free(t); break; } diff --git a/src/modules/bluetooth/bluetooth-util.h b/src/modules/bluetooth/bluetooth-util.h index 879b3a3..e529891 100644 --- a/src/modules/bluetooth/bluetooth-util.h +++ b/src/modules/bluetooth/bluetooth-util.h @@ -66,6 +66,7 @@ enum profile { /* Hook data: pa_bluetooth_transport pointer. */ typedef enum pa_bluetooth_transport_hook { PA_BLUETOOTH_TRANSPORT_HOOK_NREC_CHANGED, /* Call data: NULL. */ + PA_BLUETOOTH_TRANSPORT_HOOK_REMOVED, /* Call data: NULL. */ PA_BLUETOOTH_TRANSPORT_HOOK_MAX } pa_bluetooth_transport_hook_t; -- 2.7.4