Snap for 6339700 from 955da28c313739eeac8e01798f6970c195c22282 to q-keystone-qcom-release
Change-Id: I0b15f4f42f37473b7fcf9ecfab03a614e23fc8f2
diff --git a/src/com/android/bluetooth/a2dp/A2dpService.java b/src/com/android/bluetooth/a2dp/A2dpService.java
index b232568..2d2f34a 100755
--- a/src/com/android/bluetooth/a2dp/A2dpService.java
+++ b/src/com/android/bluetooth/a2dp/A2dpService.java
@@ -716,21 +716,27 @@
}
private void storeActiveDeviceVolume() {
- // Make sure volume has been stored before been removed from active.
- if (mFactory.getAvrcpTargetService() != null && mActiveDevice != null) {
- mFactory.getAvrcpTargetService().storeVolumeForDevice(mActiveDevice);
+ BluetoothDevice activeDevice;
+ synchronized (mStateMachines) {
+ activeDevice = mActiveDevice;
}
- if (mActiveDevice != null && mAvrcp_ext != null) {
- mAvrcp_ext.storeVolumeForDevice(mActiveDevice);
+ // Make sure volume has been stored before been removed from active.
+ if (mFactory.getAvrcpTargetService() != null && activeDevice != null) {
+ mFactory.getAvrcpTargetService().storeVolumeForDevice(activeDevice);
+ }
+ synchronized (mBtAvrcpLock) {
+ if (activeDevice != null && mAvrcp_ext != null) {
+ mAvrcp_ext.storeVolumeForDevice(activeDevice);
+ }
}
}
private void removeActiveDevice(boolean forceStopPlayingAudio) {
BluetoothDevice previousActiveDevice = mActiveDevice;
- synchronized (mBtA2dpLock) {
- // Make sure volume has been store before device been remove from active.
- storeActiveDeviceVolume();
+ // Make sure volume has been store before device been remove from active.
+ storeActiveDeviceVolume();
+ synchronized (mBtA2dpLock) {
// This needs to happen before we inform the audio manager that the device
// disconnected. Please see comment in updateAndBroadcastActiveDevice() for why.
updateAndBroadcastActiveDevice(null);