Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 62895a67 authored by Nick Pelly's avatar Nick Pelly
Browse files

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
parent 285f2422
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -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: