From: Johan Hedberg Date: Tue, 11 Dec 2012 12:06:22 +0000 (+0200) Subject: core: Auto-connect new profiles if Device.Connect was called X-Git-Tag: android-x86-4.4-r3~10321 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=22ecdfbbc61ce923d2cfa672d9a48d8a7c972c69;p=android-x86%2Fexternal-bluetooth-bluez.git core: Auto-connect new profiles if Device.Connect was called --- diff --git a/src/device.c b/src/device.c index 15a34ce5d..e6afe6460 100644 --- a/src/device.c +++ b/src/device.c @@ -2282,12 +2282,22 @@ void device_probe_profile(gpointer a, gpointer b) ba2str(&device->bdaddr, addr); err = profile->device_probe(profile, device, probe_uuids); - if (err < 0) + if (err < 0) { error("%s profile probe failed for %s", profile->name, addr); - else - device->profiles = g_slist_append(device->profiles, profile); + g_slist_free(probe_uuids); + return; + } + device->profiles = g_slist_append(device->profiles, profile); g_slist_free(probe_uuids); + + if (!profile->auto_connect || !device->general_connect) + return; + + device->pending = g_slist_append(device->pending, profile); + + if (g_slist_length(device->pending) == 1) + connect_next(device); } void device_remove_profile(gpointer a, gpointer b)