summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <treehugger-gerrit@google.com> 2016-06-03 17:42:38 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2016-06-03 17:42:38 +0000
commit104518e4c430e6e9a6bad44b9f18086d3c6f60fe (patch)
tree22a0b283df9ede3bb9bccd6a8c97fcf924070fa1
parent4d14e9d461fe60c38c8ec4348a21f7b27de06814 (diff)
parent2d0c96c908fb713cc37de16dbab60288968ab0be (diff)
Merge "While turning OFF do not honor ON requests."
-rwxr-xr-xpackages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothAdapter.java3
-rw-r--r--services/core/java/com/android/server/BluetoothManagerService.java15
2 files changed, 16 insertions, 2 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothAdapter.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothAdapter.java
index 9c5abf3a00dd..26836099c9de 100755
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothAdapter.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothAdapter.java
@@ -208,7 +208,7 @@ public final class LocalBluetoothAdapter {
return false;
}
- public void setBluetoothEnabled(boolean enabled) {
+ public boolean setBluetoothEnabled(boolean enabled) {
boolean success = enabled
? mAdapter.enable()
: mAdapter.disable();
@@ -225,6 +225,7 @@ public final class LocalBluetoothAdapter {
syncBluetoothState();
}
+ return success;
}
public BluetoothDevice getRemoteDevice(String address) {
diff --git a/services/core/java/com/android/server/BluetoothManagerService.java b/services/core/java/com/android/server/BluetoothManagerService.java
index 60005685cf96..d0f20b3d8da0 100644
--- a/services/core/java/com/android/server/BluetoothManagerService.java
+++ b/services/core/java/com/android/server/BluetoothManagerService.java
@@ -649,7 +649,20 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
"Need BLUETOOTH ADMIN permission");
if (DBG) {
Log.d(TAG,"enable(): mBluetooth =" + mBluetooth +
- " mBinding = " + mBinding);
+ " mBinding = " + mBinding + " mState = " + mState);
+ }
+ // We do not honor ON requests when the adapter is already turned ON or in the process of
+ // turning ON.
+ // As a protective mechanism to make sure that the native stack gets cleaned up properly
+ // before turning it back ON we ignore requests while the bluetooth is turning OFF.
+ // Bug: b/28318203
+ if (mState == BluetoothAdapter.STATE_BLE_TURNING_OFF ||
+ mState == BluetoothAdapter.STATE_TURNING_OFF ||
+ mState == BluetoothAdapter.STATE_ON ||
+ mState == BluetoothAdapter.STATE_BLE_ON ||
+ mState == BluetoothAdapter.STATE_TURNING_ON ||
+ mState == BluetoothAdapter.STATE_BLE_TURNING_ON) {
+ return false;
}
synchronized(mReceiver) {