Hi Frédéric, * Frédéric Danis <frederic.da...@linux.intel.com> [2011-01-18 18:05:03 +0100]:
> Add bluetooth_ref()/bluetooth_unref() to support reference count in > bluetooth utils. > --- > plugins/bluetooth.c | 60 ++++++++++++++++++++++++++++++++++++++------------ > 1 files changed, 45 insertions(+), 15 deletions(-) > > diff --git a/plugins/bluetooth.c b/plugins/bluetooth.c > index 602c6da..d641d18 100644 > --- a/plugins/bluetooth.c > +++ b/plugins/bluetooth.c > @@ -40,6 +40,7 @@ > static DBusConnection *connection; > static GHashTable *uuid_hash = NULL; > static GHashTable *adapter_address_hash = NULL; > +static gint ref_count; > > void bluetooth_create_path(const char *dev_addr, const char *adapter_addr, > char *buf, int size) > @@ -504,12 +505,12 @@ static guint adapter_added_watch; > static guint adapter_removed_watch; > static guint property_watch; > > -int bluetooth_register_uuid(const char *uuid, struct bluetooth_profile > *profile) > +static int bluetooth_ref(void) > { > int err; > > - if (uuid_hash) > - goto done; > + if (ref_count > 0) > + return 0; > > connection = ofono_dbus_get_connection(); > > @@ -543,12 +544,7 @@ int bluetooth_register_uuid(const char *uuid, struct > bluetooth_profile *profile) > adapter_address_hash = g_hash_table_new_full(g_str_hash, g_str_equal, > g_free, g_free); > > -done: > - g_hash_table_insert(uuid_hash, g_strdup(uuid), profile); > - > - bluetooth_send_with_reply("/", BLUEZ_MANAGER_INTERFACE, "GetProperties", > - manager_properties_cb, NULL, NULL, -1, > - DBUS_TYPE_INVALID); > + g_atomic_int_inc(&ref_count); > > return 0; > > @@ -557,14 +553,17 @@ remove: > g_dbus_remove_watch(connection, adapter_added_watch); > g_dbus_remove_watch(connection, adapter_removed_watch); > g_dbus_remove_watch(connection, property_watch); > + Extra line here. -- Gustavo F. Padovan http://profusion.mobi _______________________________________________ ofono mailing list ofono@ofono.org http://lists.ofono.org/listinfo/ofono