diff options
author | Matthew Xie <mattx@google.com> | 2011-09-16 16:57:24 -0700 |
---|---|---|
committer | Matthew Xie <mattx@google.com> | 2011-09-19 22:45:00 -0700 |
commit | dcbc97fc28f4eb5910acc11dfac5efcd597c737d (patch) | |
tree | 07ee772d82e1d7f8982d0d14a0ac854362247beb /core/java/android/server/BluetoothAdapterStateMachine.java | |
parent | 41d6bfb27909c2f27e41b5aa1d182e00b4c2f631 (diff) | |
download | frameworks_base-dcbc97fc28f4eb5910acc11dfac5efcd597c737d.zip frameworks_base-dcbc97fc28f4eb5910acc11dfac5efcd597c737d.tar.gz frameworks_base-dcbc97fc28f4eb5910acc11dfac5efcd597c737d.tar.bz2 |
Check null of pidPair to skip the case the service record has been removed
Check null of pidPair instead of pidPair.first which caused a nullpointer
exception. clean local variables after sending out STATE_OFF intent.
Check bluetooth state in removeServiceRecord.
bug 5330367
Change-Id: Ib0af8143223bea48d3f587cca18544c4aef29980
Diffstat (limited to 'core/java/android/server/BluetoothAdapterStateMachine.java')
-rw-r--r-- | core/java/android/server/BluetoothAdapterStateMachine.java | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/core/java/android/server/BluetoothAdapterStateMachine.java b/core/java/android/server/BluetoothAdapterStateMachine.java index ac46ee2..d26364e 100644 --- a/core/java/android/server/BluetoothAdapterStateMachine.java +++ b/core/java/android/server/BluetoothAdapterStateMachine.java @@ -434,6 +434,10 @@ final class BluetoothAdapterStateMachine extends StateMachine { if (mPublicState == BluetoothAdapter.STATE_TURNING_OFF) { transitionTo(mHotOff); finishSwitchingOff(); + if (!mContext.getResources().getBoolean + (com.android.internal.R.bool.config_bluetooth_adapter_quick_switch)) { + deferMessage(obtainMessage(TURN_COLD)); + } } } else { if (mPublicState != BluetoothAdapter.STATE_TURNING_ON) { @@ -486,16 +490,6 @@ final class BluetoothAdapterStateMachine extends StateMachine { } return retValue; } - - private void finishSwitchingOff() { - mBluetoothService.finishDisable(); - if (mContext.getResources().getBoolean - (com.android.internal.R.bool.config_bluetooth_adapter_quick_switch)) { - broadcastState(BluetoothAdapter.STATE_OFF); - } else { - deferMessage(obtainMessage(TURN_COLD)); - } - } } private class BluetoothOn extends State { @@ -656,12 +650,10 @@ final class BluetoothAdapterStateMachine extends StateMachine { //$FALL-THROUGH$ all devices are already disconnected case ALL_DEVICES_DISCONNECTED: removeMessages(DEVICES_DISCONNECT_TIMEOUT); - mBluetoothService.finishDisable(); - broadcastState(BluetoothAdapter.STATE_OFF); + finishSwitchingOff(); break; case DEVICES_DISCONNECT_TIMEOUT: - mBluetoothService.finishDisable(); - broadcastState(BluetoothAdapter.STATE_OFF); + finishSwitchingOff(); Log.e(TAG, "Devices fail to disconnect, reseting..."); transitionTo(mHotOff); deferMessage(obtainMessage(TURN_COLD)); @@ -695,6 +687,12 @@ final class BluetoothAdapterStateMachine extends StateMachine { } } + private void finishSwitchingOff() { + mBluetoothService.finishDisable(); + broadcastState(BluetoothAdapter.STATE_OFF); + mBluetoothService.cleanupAfterFinishDisable(); + } + private void shutoffBluetooth() { mBluetoothService.shutoffBluetooth(); mEventLoop.stop(); |