Fix regression.
When turning off BT while connected to an A2DP/HFP headset we can hit the path BluetoothHeadsetService.onReceive(BluetoothHeadset.STATE_CHANGED) -> BluetoothHandsfree.audioOff() -> BluetoothA2dp.resumeSink() -> which causes resumeSink() to NPE because mAudioDevices.get() returns null. It's a race between A2DP marking the device as disconnected, and HFP marking the device as disconnected. Fix is to NPE check in resumeSink(). Change-Id: I2782ac8c70ea1678d7de5fcd49bff8e03df36f4e
This commit is contained in:
committed by
android-build SharedAccount
parent
c926de31bc
commit
8da0999816
@@ -333,10 +333,11 @@ public class BluetoothA2dpService extends IBluetoothA2dp.Stub {
|
||||
return false;
|
||||
}
|
||||
String path = mBluetoothService.getObjectPathFromAddress(device.getAddress());
|
||||
if (path == null) {
|
||||
Integer state = mAudioDevices.get(device);
|
||||
if (path == null || state == null) {
|
||||
return false;
|
||||
}
|
||||
switch (mAudioDevices.get(device)) {
|
||||
switch (state.intValue()) {
|
||||
case BluetoothA2dp.STATE_CONNECTED:
|
||||
return true;
|
||||
case BluetoothA2dp.STATE_PLAYING:
|
||||
@@ -354,10 +355,11 @@ public class BluetoothA2dpService extends IBluetoothA2dp.Stub {
|
||||
return false;
|
||||
}
|
||||
String path = mBluetoothService.getObjectPathFromAddress(device.getAddress());
|
||||
if (path == null) {
|
||||
Integer state = mAudioDevices.get(device);
|
||||
if (path == null || state == null) {
|
||||
return false;
|
||||
}
|
||||
switch (mAudioDevices.get(device)) {
|
||||
switch (state.intValue()) {
|
||||
case BluetoothA2dp.STATE_PLAYING:
|
||||
return true;
|
||||
case BluetoothA2dp.STATE_CONNECTED:
|
||||
|
||||
Reference in New Issue
Block a user