Hi Tanu, On Tue, Nov 20, 2012 at 3:48 PM, Tanu Kaskinen <tanuk at iki.fi> wrote: > Without this patch, device modules will be left around after the > device has been disconnected and when they are reconnected, the > discovery module will load duplicate device module instances. > > BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=57239 > --- > src/modules/bluetooth/bluetooth-util.c | 2 ++ > src/modules/bluetooth/bluetooth-util.h | 1 + > src/modules/bluetooth/module-bluetooth-device.c | 22 +++++++++++++++++++--- > 3 files changed, 22 insertions(+), 3 deletions(-) > > diff --git a/src/modules/bluetooth/bluetooth-util.c b/src/modules/bluetooth/bluetooth-util.c > index 6b3085b..1f40e81 100644 > --- a/src/modules/bluetooth/bluetooth-util.c > +++ b/src/modules/bluetooth/bluetooth-util.c > @@ -517,6 +517,8 @@ static void device_update_any_audio_profile_connected(pa_bluetooth_device *d) { > else > pa_log_debug("Device %s doesn't have any audio profiles connected anymore.", d->path); > > + pa_hook_fire(&d->hooks[PA_BLUETOOTH_DEVICE_HOOK_ANY_AUDIO_PROFILE_CONNECTED_CHANGED], NULL); > + > run_callback(d, false); > } > > diff --git a/src/modules/bluetooth/bluetooth-util.h b/src/modules/bluetooth/bluetooth-util.h > index c865b93..bcc7be3 100644 > --- a/src/modules/bluetooth/bluetooth-util.h > +++ b/src/modules/bluetooth/bluetooth-util.h > @@ -95,6 +95,7 @@ typedef enum pa_bt_audio_state { > typedef enum pa_bluetooth_device_hook { > PA_BLUETOOTH_DEVICE_HOOK_REMOVED, /* Call data: NULL. */ > PA_BLUETOOTH_DEVICE_HOOK_UUID_ADDED, /* Call data: const char *uuid. */ > + PA_BLUETOOTH_DEVICE_HOOK_ANY_AUDIO_PROFILE_CONNECTED_CHANGED, /* Call data: NULL. */ I would suggest you split this patch into two, in order to add to hook in the first one without any further changes in module-bluetooth-device. Besides, I propose changing the hook to PA_BLUETOOTH_DEVICE_HOOK_PROFILE_CONNECTED_CHANGED. I think this could fit your idea and it would additionally be handy to server other purposes, such as completely removing D-Bus code in module-bluetooth-device (i.e. remove filter_cb). Cheers, Mikel