diff options
Diffstat (limited to 'src/adapter.c')
| -rw-r--r-- | src/adapter.c | 29 | 
1 files changed, 24 insertions, 5 deletions
diff --git a/src/adapter.c b/src/adapter.c index 08993858..4f35766b 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -814,6 +814,28 @@ static void update_ext_inquiry_response(int dd, struct hci_dev *dev)  						strerror(errno), errno);  } +void adapter_name_changed(struct btd_adapter *adapter, const char *name) +{ +	struct hci_dev *dev = &adapter->dev; +	int dd; + +	if (strncmp(name, (char *) dev->name, 248) == 0) +		return; + +	write_local_name(&adapter->bdaddr, (char *) name); + +	strncpy((char *) dev->name, name, 248); + +	dd = hci_open_dev(adapter->dev_id); +	if (dd >= 0) { +		update_ext_inquiry_response(dd, dev); +		hci_close_dev(dd); +	} + +	emit_property_changed(connection, adapter->path, ADAPTER_INTERFACE, +				"Name", DBUS_TYPE_STRING, &name); +} +  static int adapter_set_name(struct btd_adapter *adapter, const char *name)  {  	struct hci_dev *dev = &adapter->dev; @@ -854,7 +876,6 @@ static DBusMessage *set_name(DBusConnection *conn, DBusMessage *msg,  {  	struct btd_adapter *adapter = data;  	int ecode; -	const char *path;  	if (!g_utf8_validate(name, -1, NULL)) {  		error("Name change failed: supplied name isn't valid UTF-8"); @@ -865,10 +886,8 @@ static DBusMessage *set_name(DBusConnection *conn, DBusMessage *msg,  	if (ecode < 0)  		return failed_strerror(msg, -ecode); -	path = dbus_message_get_path(msg); - -	emit_property_changed(conn, path, ADAPTER_INTERFACE, "Name", -				DBUS_TYPE_STRING, &name); +	emit_property_changed(conn, adapter->path, ADAPTER_INTERFACE, +				"Name", DBUS_TYPE_STRING, &name);  	return dbus_message_new_method_return(msg);  }  | 
