[PATCH 3/3] hfp: remove modems if bluetoothd shutdowns without calling Release

Denis Kenzior denkenz at gmail.com
Mon Feb 15 11:41:08 PST 2010


Hi Gustavo,

> ---
>  plugins/hfp.c |   28 ++++++++++++++++++++++++++--
>  1 files changed, 26 insertions(+), 2 deletions(-)
> 
> diff --git a/plugins/hfp.c b/plugins/hfp.c
> index 3776dc6..c63e332 100644
> --- a/plugins/hfp.c
> +++ b/plugins/hfp.c
> @@ -911,6 +911,23 @@ done:
>  	dbus_message_unref(reply);
>  }
> 
> +static gboolean hfp_remove_each_modem(gpointer key, gpointer value,
>  gpointer user_data) +{
> +	struct ofono_modem *modem = value;
> +
> +	ofono_modem_remove(modem);
> +
> +	return TRUE;
> +}
> +
> +static void bluetooth_disconnect(DBusConnection *connection, void
>  *user_data) +{
> +	if (uuid_hash == NULL)
> +		return;
> +
> +	g_hash_table_foreach_remove(uuid_hash, hfp_remove_each_modem, NULL);
> +}
> +
>  static int hfp_register_ofono_handsfree(struct ofono_modem *modem)
>  {
>  	const char *obj_path = ofono_modem_get_path(modem);
> @@ -1098,6 +1115,7 @@ static struct ofono_modem_driver hfp_driver = {
>  	.post_sim	= hfp_post_sim,
>  };
> 
> +static guint watch;

Rename this into something more sensible, e.g. bluetoothd_exit_watch

>  static guint adapter_added_watch;
>  static guint adapter_removed_watch;
>  static guint uuid_watch;
> @@ -1111,6 +1129,10 @@ static int hfp_init()
> 
>  	connection = ofono_dbus_get_connection();
> 
> +	watch = g_dbus_add_service_watch(connection, BLUEZ_SERVICE,
> +			NULL, bluetooth_disconnect, NULL, NULL);
> +
> +

Why the extra line?

>  	adapter_added_watch = g_dbus_add_signal_watch(connection, NULL, NULL,
>  						BLUEZ_MANAGER_INTERFACE,
>  						"AdapterAdded",
> @@ -1126,8 +1148,8 @@ static int hfp_init()
>  						"PropertyChanged",
>  						property_changed, NULL, NULL);
> 
> -	if (adapter_added_watch == 0 || adapter_removed_watch == 0||
> -			uuid_watch == 0) {
> +	if (watch == 0 || adapter_added_watch == 0 ||
> +			adapter_removed_watch == 0|| uuid_watch == 0) {
>  		err = -EIO;
>  		goto remove;
>  	}
> @@ -1150,6 +1172,7 @@ static int hfp_init()
>  	return 0;
> 
>  remove:
> +	g_dbus_remove_watch(connection, watch);
>  	g_dbus_remove_watch(connection, adapter_added_watch);
>  	g_dbus_remove_watch(connection, adapter_removed_watch);
>  	g_dbus_remove_watch(connection, uuid_watch);
> @@ -1165,6 +1188,7 @@ remove:
> 
>  static void hfp_exit()
>  {
> +	g_dbus_remove_watch(connection, watch);
>  	g_dbus_remove_watch(connection, adapter_added_watch);
>  	g_dbus_remove_watch(connection, adapter_removed_watch);
>  	g_dbus_remove_watch(connection, uuid_watch);
> 

Regards,
-Denis


More information about the ofono mailing list