Hi, On Mon, Nov 22, 2010 at 4:33 PM, Johan Hedberg <johan.hedberg@xxxxxxxxx> wrote: > Hi Bartosz, > > On Mon, Nov 22, 2010, Bartosz Szatkowski wrote: >> Previously even if BT was disabled, bluetoothd would handle some dbus >> singals (mostly connected with HFP). Now filters are added when >> BT is enabled and removed when BT is disabled. >> --- >> audio/manager.c | 4 ++-- >> audio/telephony-dummy.c | 10 ++++++++++ >> audio/telephony-maemo5.c | 10 ++++++++++ >> audio/telephony-maemo6.c | 10 ++++++++++ >> audio/telephony-ofono.c | 10 ++++++++++ >> audio/telephony.h | 1 + >> src/adapter.c | 5 +++++ >> 7 files changed, 48 insertions(+), 2 deletions(-) > > Nack on this one. I understand the issue you're trying to fix but it > needs to be done differently. > >> diff --git a/audio/manager.c b/audio/manager.c >> index 816c807..2fc7bf1 100644 >> --- a/audio/manager.c >> +++ b/audio/manager.c >> @@ -1178,7 +1178,7 @@ proceed: >> btd_register_adapter_driver(&media_server_driver); >> >> if (enabled.headset) { >> - telephony_init(); >> + telephony_set_state(1); >> btd_register_adapter_driver(&headset_server_driver); >> } > > If you're gonna call this "state" you should have proper defines or > enums for the values, however in this case it's essentially a boolean so > that's not necessary. In fact since it's a boolean you don't even need > to have any new function or variable at all for it: just use > telephony_init and telephony_exit. > >> --- a/src/adapter.c >> +++ b/src/adapter.c >> @@ -57,6 +57,7 @@ >> #include "glib-helper.h" >> #include "agent.h" >> #include "storage.h" >> +#include "../audio/telephony.h" >> >> #define IO_CAPABILITY_DISPLAYONLY 0x00 >> #define IO_CAPABILITY_DISPLAYYESNO 0x01 >> @@ -2404,6 +2405,8 @@ int adapter_start(struct btd_adapter *adapter) >> >> err = adapter_up(adapter, mode); >> >> + telephony_init(); >> + > > This is just wrong. The core daemon should never have direct access to > the telephony driver. Instead, you should have the audio plugin > (probably audio/manager.c or audio/headset.c) register a adapter powered > callback and then call telehony_init/exit from that callback. I have an almost working version of this using adapter drivers and powered changes via callback registration, the tricky part here is how to detect when to do headset_init/headset_exit since those should be called only once. I didn't know there somebody working on this but anyway I gonna try to finish this asap. -- Luiz Augusto von Dentz Computer Engineer -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html