diff options
| author | Jean-Michel Trivi <jmtrivi@google.com> | 2015-01-16 17:37:29 +0000 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2015-01-16 17:37:29 +0000 |
| commit | c2230a9d1a7bba12b78630a0dfbad7be5c97050f (patch) | |
| tree | c2b0117d7dd5c367b70705524900e44ad182d500 /media | |
| parent | 6c8c19da7b631ee6647c1655e737004d71deeb38 (diff) | |
| parent | ef417bb7a06b0d58faa21f42599d7dd4fd9e3ff2 (diff) | |
| download | frameworks_base-c2230a9d1a7bba12b78630a0dfbad7be5c97050f.zip frameworks_base-c2230a9d1a7bba12b78630a0dfbad7be5c97050f.tar.gz frameworks_base-c2230a9d1a7bba12b78630a0dfbad7be5c97050f.tar.bz2 | |
am ef417bb7: am 6a64a9cd: Merge "Prevent AudioService dead lock issue."
* commit 'ef417bb7a06b0d58faa21f42599d7dd4fd9e3ff2':
Prevent AudioService dead lock issue.
Diffstat (limited to 'media')
| -rw-r--r-- | media/java/android/media/AudioService.java | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/media/java/android/media/AudioService.java b/media/java/android/media/AudioService.java index f4c8986..46bc637 100644 --- a/media/java/android/media/AudioService.java +++ b/media/java/android/media/AudioService.java @@ -525,6 +525,7 @@ public class AudioService extends IAudioService.Stub { // Reference to BluetoothA2dp to query for AbsoluteVolume. private BluetoothA2dp mA2dp; + // lock always taken synchronized on mConnectedDevices private final Object mA2dpAvrcpLock = new Object(); // If absolute volume is supported in AVRCP device private boolean mAvrcpAbsVolSupported = false; @@ -2876,12 +2877,12 @@ public class AudioService extends IAudioService.Stub { List<BluetoothDevice> deviceList; switch(profile) { case BluetoothProfile.A2DP: - synchronized (mA2dpAvrcpLock) { - mA2dp = (BluetoothA2dp) proxy; - deviceList = mA2dp.getConnectedDevices(); - if (deviceList.size() > 0) { - btDevice = deviceList.get(0); - synchronized (mConnectedDevices) { + synchronized (mConnectedDevices) { + synchronized (mA2dpAvrcpLock) { + mA2dp = (BluetoothA2dp) proxy; + deviceList = mA2dp.getConnectedDevices(); + if (deviceList.size() > 0) { + btDevice = deviceList.get(0); int state = mA2dp.getConnectionState(btDevice); int delay = checkSendBecomingNoisyIntent( AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP, @@ -2976,9 +2977,9 @@ public class AudioService extends IAudioService.Stub { public void onServiceDisconnected(int profile) { switch(profile) { case BluetoothProfile.A2DP: - synchronized (mA2dpAvrcpLock) { - mA2dp = null; - synchronized (mConnectedDevices) { + synchronized (mConnectedDevices) { + synchronized (mA2dpAvrcpLock) { + mA2dp = null; if (mConnectedDevices.containsKey(AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP)) { makeA2dpDeviceUnavailableNow( mConnectedDevices.get(AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP)); |
