diff options
author | Jean-Michel Trivi <jmtrivi@google.com> | 2015-08-04 20:45:18 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-08-04 20:45:18 +0000 |
commit | fc5a4bf0e1520bf3acd75226d760b8e1d7cdd59f (patch) | |
tree | dc10c93957b8b5c49476a979fdc1f9e6377b5751 /services/core/java/com/android/server/audio/AudioService.java | |
parent | ce68917c849548d80d9aca14f262d22d9c47c3dc (diff) | |
parent | 6d00e41145a577de114f93985bf05d7eca99ccc3 (diff) | |
download | frameworks_base-fc5a4bf0e1520bf3acd75226d760b8e1d7cdd59f.zip frameworks_base-fc5a4bf0e1520bf3acd75226d760b8e1d7cdd59f.tar.gz frameworks_base-fc5a4bf0e1520bf3acd75226d760b8e1d7cdd59f.tar.bz2 |
Merge "AudioService: check for audio device connection success" into mnc-dev
Diffstat (limited to 'services/core/java/com/android/server/audio/AudioService.java')
-rw-r--r-- | services/core/java/com/android/server/audio/AudioService.java | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index 094cb57..a0ededf 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -4730,13 +4730,19 @@ public class AudioService extends IAudioService.Stub { Slog.i(TAG, "deviceSpec:" + deviceSpec + " is(already)Connected:" + isConnected); } if (connect && !isConnected) { - AudioSystem.setDeviceConnectionState(device, AudioSystem.DEVICE_STATE_AVAILABLE, - address, deviceName); + final int res = AudioSystem.setDeviceConnectionState(device, + AudioSystem.DEVICE_STATE_AVAILABLE, address, deviceName); + if (res != AudioSystem.AUDIO_STATUS_OK) { + Slog.e(TAG, "not connecting device 0x" + Integer.toHexString(device) + + " due to command error " + res ); + return false; + } mConnectedDevices.put(deviceKey, new DeviceListSpec(device, deviceName, address)); return true; } else if (!connect && isConnected) { - AudioSystem.setDeviceConnectionState(device, AudioSystem.DEVICE_STATE_UNAVAILABLE, - address, deviceName); + AudioSystem.setDeviceConnectionState(device, + AudioSystem.DEVICE_STATE_UNAVAILABLE, address, deviceName); + // always remove even if disconnection failed mConnectedDevices.remove(deviceKey); return true; } @@ -4869,7 +4875,10 @@ public class AudioService extends IAudioService.Stub { boolean isUsb = ((device & ~AudioSystem.DEVICE_OUT_ALL_USB) == 0) || (((device & AudioSystem.DEVICE_BIT_IN) != 0) && ((device & ~AudioSystem.DEVICE_IN_ALL_USB) == 0)); - handleDeviceConnection(state == 1, device, address, deviceName); + if (!handleDeviceConnection(state == 1, device, address, deviceName)) { + // change of connection state failed, bailout + return; + } if (state != 0) { if ((device == AudioSystem.DEVICE_OUT_WIRED_HEADSET) || (device == AudioSystem.DEVICE_OUT_WIRED_HEADPHONE) || |