Diff between 1106efd440bf678c1422a9247b8c27f2259ac94b and 37cd89f0032e0f8df499e0047ffcc5ae133e6d2a

Changed Files

File Additions Deletions Status
src/adapter.c +4 -2 modified
src/device.c +4 -5 modified

Full Patch

diff --git a/src/adapter.c b/src/adapter.c
index 9fadc1c..df06d1d 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -1877,11 +1877,12 @@ static void create_stored_device_from_profiles(char *key, char *value,
 	device_set_temporary(device, FALSE);
 	adapter->devices = g_slist_append(adapter->devices, device);
 
-	device_probe_drivers(device, uuids);
 	list = device_services_from_record(device, uuids);
 	if (list)
 		device_register_services(connection, device, list, ATT_PSM);
 
+	device_probe_drivers(device, uuids);
+
 	g_slist_free_full(uuids, g_free);
 }
 
@@ -2052,9 +2053,10 @@ static void create_stored_device_from_primary(char *key, char *value,
 		uuids = g_slist_append(uuids, prim->uuid);
 	}
 
-	device_probe_drivers(device, uuids);
 	device_register_services(connection, device, services, -1);
 
+	device_probe_drivers(device, uuids);
+
 	g_slist_free(uuids);
 }
 
diff --git a/src/device.c b/src/device.c
index b7a3e92..7b36f5b 100644
--- a/src/device.c
+++ b/src/device.c
@@ -1426,12 +1426,12 @@ static void search_cb(sdp_list_t *recs, int err, gpointer user_data)
 	if (req->profiles_added) {
 		GSList *list;
 
-		device_probe_drivers(device, req->profiles_added);
-
 		list = device_services_from_record(device, req->profiles_added);
 		if (list)
 			device_register_services(req->conn, device, list,
 								ATT_PSM);
+
+		device_probe_drivers(device, req->profiles_added);
 	}
 
 	/* Remove drivers for services removed */
@@ -1587,9 +1587,8 @@ static void primary_cb(GSList *services, guint8 status, gpointer user_data)
 		uuids = g_slist_append(uuids, prim->uuid);
 	}
 
-	device_probe_drivers(device, uuids);
-
 	device_register_services(req->conn, device, g_slist_copy(services), -1);
+	device_probe_drivers(device, uuids);
 
 	g_slist_free(uuids);
 
@@ -2340,9 +2339,9 @@ void device_set_authorizing(struct btd_device *device, gboolean auth)
 void device_register_services(DBusConnection *conn, struct btd_device *device,
 						GSList *prim_list, int psm)
 {
+	device->primaries = g_slist_concat(device->primaries, prim_list);
 	device->services = attrib_client_register(conn, device, psm, NULL,
 								prim_list);
-	device->primaries = g_slist_concat(device->primaries, prim_list);
 }
 
 GSList *btd_device_get_primaries(struct btd_device *device)