summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJaikumar Ganesh <jaikumar@google.com>2010-09-16 18:24:42 -0700
committerJaikumar Ganesh <jaikumar@google.com>2010-09-16 18:56:30 -0700
commit84905edb6315ac0af53141cf2f91591443d7422a (patch)
tree1dc233b72db9e126c994bca08638097b643ca5a4 /src
parente714898a1abfd828a239e1be7b3f75e2a3cc2120 (diff)
downloadpackages_apps_Settings-84905edb6315ac0af53141cf2f91591443d7422a.zip
packages_apps_Settings-84905edb6315ac0af53141cf2f91591443d7422a.tar.gz
packages_apps_Settings-84905edb6315ac0af53141cf2f91591443d7422a.tar.bz2
Don't disconnect the same device before connecting.
We Pair: Remote device sends incoming connection, we get connected. We get BondingState change and we connect. Settings app disconnects connected profiles and then connects without checking whether we are disconnecting the same device itself. How was it working before ? Settings app used to queue all commands. The disconnect followed by the connect would work but unnecessarily disconnect and then connect. With the queuing moved to framework, the connect fails since the disconnect status has not been broadcasted. Settings app shouldn't be disconnecting connected profiles. That logic should reside in the framework. There is an open bug and when the new APIs get implemented this will get removed. Change-Id: I32a7fa36ff3c3321691c55071498f985dcdcfe8e
Diffstat (limited to 'src')
-rw-r--r--src/com/android/settings/bluetooth/CachedBluetoothDevice.java21
1 files changed, 11 insertions, 10 deletions
diff --git a/src/com/android/settings/bluetooth/CachedBluetoothDevice.java b/src/com/android/settings/bluetooth/CachedBluetoothDevice.java
index 48fd85d..9b16005 100644
--- a/src/com/android/settings/bluetooth/CachedBluetoothDevice.java
+++ b/src/com/android/settings/bluetooth/CachedBluetoothDevice.java
@@ -86,10 +86,10 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
// See mConnectAttempted
private static final long MAX_UUID_DELAY_FOR_AUTO_CONNECT = 5000;
-
+
/**
* Describes the current device and profile for logging.
- *
+ *
* @param profile Profile to describe
* @return Description of the device and profile
*/
@@ -102,7 +102,7 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
return sb.toString();
}
-
+
private String describe(Profile profile) {
return describe(this, profile);
}
@@ -242,7 +242,7 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
.getProfileManager(mLocalManager, profile);
if (profileManager.isPreferred(mDevice)) {
++preferredProfiles;
- disconnectConnected(profile);
+ disconnectConnected(this, profile);
connectInt(this, profile);
}
}
@@ -265,7 +265,7 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
LocalBluetoothProfileManager profileManager = LocalBluetoothProfileManager
.getProfileManager(mLocalManager, profile);
profileManager.setPreferred(mDevice, false);
- disconnectConnected(profile);
+ disconnectConnected(this, profile);
connectInt(this, profile);
}
}
@@ -275,19 +275,20 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
mConnectAttempted = SystemClock.elapsedRealtime();
// Reset the only-show-one-error-dialog tracking variable
mIsConnectingErrorPossible = true;
- disconnectConnected(profile);
+ disconnectConnected(this, profile);
connectInt(this, profile);
}
- private void disconnectConnected(Profile profile) {
+ private void disconnectConnected(CachedBluetoothDevice device, Profile profile) {
LocalBluetoothProfileManager profileManager =
LocalBluetoothProfileManager.getProfileManager(mLocalManager, profile);
CachedBluetoothDeviceManager cachedDeviceManager = mLocalManager.getCachedDeviceManager();
Set<BluetoothDevice> devices = profileManager.getConnectedDevices();
if (devices == null) return;
- for (BluetoothDevice device : devices) {
- CachedBluetoothDevice cachedDevice = cachedDeviceManager.findDevice(device);
- if (cachedDevice != null) {
+ for (BluetoothDevice btDevice : devices) {
+ CachedBluetoothDevice cachedDevice = cachedDeviceManager.findDevice(btDevice);
+
+ if (cachedDevice != null && !cachedDevice.equals(device)) {
disconnectInt(cachedDevice, profile);
}
}