Fix for Bluetooth not restarting on User Switch
The flag that keeps track of the Bluetooth adapter status(mEnable) is not guarded correctly and could go out of sync with the adapter status. This causes User Switch handling to not function correctly since it checks for the status of the mEnable flag before restarting Bluetooth. This fix queries the Bluetooth Adapter for the status instead of using the mEnable flag. Bug: b/37648701 Test: Tested switching users multiple times in both phone and carkit. Also tested pairing and connection for sanity. Change-Id: I17facecf8e1de90df11c11d5b0a184f48a0356e4
This commit is contained in:
committed by
Andre Eisenbach
parent
73818566d6
commit
7d1203a2f4
@@ -1699,7 +1699,7 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
|
||||
mHandler.removeMessages(MESSAGE_USER_SWITCHED);
|
||||
|
||||
/* disable and enable BT when detect a user switch */
|
||||
if (mEnable && mBluetooth != null) {
|
||||
if (mBluetooth != null && isEnabled()) {
|
||||
try {
|
||||
mBluetoothLock.readLock().lock();
|
||||
if (mBluetooth != null) {
|
||||
@@ -1768,6 +1768,8 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
|
||||
mState = BluetoothAdapter.STATE_OFF;
|
||||
// enable
|
||||
addActiveLog(REASON_USER_SWITCH, true);
|
||||
// mEnable flag could have been reset on disableBLE. Reenable it.
|
||||
mEnable = true;
|
||||
handleEnable(mQuietEnable);
|
||||
} else if (mBinding || mBluetooth != null) {
|
||||
Message userMsg = mHandler.obtainMessage(MESSAGE_USER_SWITCHED);
|
||||
|
||||
Reference in New Issue
Block a user