diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/dbus-hci.c | 21 | ||||
| -rw-r--r-- | src/device.c | 25 | ||||
| -rw-r--r-- | src/device.h | 3 | 
3 files changed, 24 insertions, 25 deletions
diff --git a/src/dbus-hci.c b/src/dbus-hci.c index 465f2bde..e480eb7e 100644 --- a/src/dbus-hci.c +++ b/src/dbus-hci.c @@ -547,26 +547,7 @@ void hcid_dbus_bonding_process_complete(bdaddr_t *local, bdaddr_t *peer,  	/* If this is a new pairing send the appropriate signal for it  	 * and proceed with service discovery */  	if (status == 0) { -		const char *dev_path; -		dbus_bool_t paired = TRUE; - -		device_set_temporary(device, FALSE); -		dev_path = device_get_path(device); - -		dbus_connection_emit_property_changed(connection, dev_path, -					DEVICE_INTERFACE, "Paired", -					DBUS_TYPE_BOOLEAN, &paired); - -		/* If we were initiators start service discovery immediately. -		 * However if the other end was the initator wait a few seconds -		 * before SDP. This is due to potential IOP issues if the other -		 * end starts doing SDP at the same time as us */ -		if (bonding) -			device_browse(device, bonding->conn, -					bonding->msg, NULL); -		else -			device_schedule_service_discovery(device); - +		device_set_paired(connection, device, bonding);  		return;  	} diff --git a/src/device.c b/src/device.c index 82a90e05..00589006 100644 --- a/src/device.c +++ b/src/device.c @@ -1271,14 +1271,31 @@ static gboolean start_discovery(gpointer user_data)  	return FALSE;  } -void device_schedule_service_discovery(struct btd_device *device) +void device_set_paired(DBusConnection *conn, struct btd_device *device, +			struct bonding_request_info *bonding)  { +	dbus_bool_t paired = TRUE; + +	device_set_temporary(device, FALSE); + +	dbus_connection_emit_property_changed(conn, device->path, +						DEVICE_INTERFACE, "Paired", +						DBUS_TYPE_BOOLEAN, &paired); +  	if (device->discov_timer)  		return; -	device->discov_timer = g_timeout_add(DISCOVERY_TIMER, -						start_discovery, -						device); +	/* If we were initiators start service discovery immediately. +	 * However if the other end was the initator wait a few seconds +	 * before SDP. This is due to potential IOP issues if the other +	 * end starts doing SDP at the same time as us */ +	if (bonding) +		device_browse(device, bonding->conn, +				bonding->msg, NULL); +	else +		device->discov_timer = g_timeout_add(DISCOVERY_TIMER, +							start_discovery, +							device);  }  int btd_register_device_driver(struct btd_device_driver *driver) diff --git a/src/device.h b/src/device.h index af6a8755..099ecbbc 100644 --- a/src/device.h +++ b/src/device.h @@ -42,7 +42,8 @@ void device_set_temporary(struct btd_device *device, gboolean temporary);  void device_set_cap(struct btd_device *device, uint8_t cap);  void device_set_auth(struct btd_device *device, uint8_t auth);  uint8_t device_get_auth(struct btd_device *device); -void device_schedule_service_discovery(struct btd_device *device); +void device_set_paired(DBusConnection *conn, struct btd_device *device, +			struct bonding_request_info *bonding);  void device_set_connected(DBusConnection *conn, struct btd_device *device,  				gboolean connected);  | 
