am c2db03b0: am bd874b8b: Merge "AudioManager: fix audio device callback list access" into mnc-dev

* commit 'c2db03b0b8627b177522db9e05d13112b9451b72':
  AudioManager: fix audio device callback list access
This commit is contained in:
Eric Laurent
2015-07-15 01:57:58 +00:00
committed by Android Git Automerger

View File

@@ -3859,8 +3859,8 @@ public class AudioManager {
*/ */
public void registerAudioDeviceCallback(AudioDeviceCallback callback, public void registerAudioDeviceCallback(AudioDeviceCallback callback,
android.os.Handler handler) { android.os.Handler handler) {
if (callback != null && !mDeviceCallbacks.containsKey(callback)) { synchronized (mDeviceCallbacks) {
synchronized (mDeviceCallbacks) { if (callback != null && !mDeviceCallbacks.containsKey(callback)) {
if (mDeviceCallbacks.size() == 0) { if (mDeviceCallbacks.size() == 0) {
if (mPortListener == null) { if (mPortListener == null) {
mPortListener = new OnAmPortUpdateListener(); mPortListener = new OnAmPortUpdateListener();
@@ -3924,21 +3924,20 @@ public class AudioManager {
calcListDeltas(current_ports, mPreviousPorts, GET_DEVICES_ALL); calcListDeltas(current_ports, mPreviousPorts, GET_DEVICES_ALL);
if (added_devices.length != 0 || removed_devices.length != 0) { if (added_devices.length != 0 || removed_devices.length != 0) {
Collection<NativeEventHandlerDelegate> values;
synchronized (mDeviceCallbacks) { synchronized (mDeviceCallbacks) {
values = mDeviceCallbacks.values(); for (int i = 0; i < mDeviceCallbacks.size(); i++) {
} handler = mDeviceCallbacks.valueAt(i).getHandler();
for (NativeEventHandlerDelegate delegate : values) { if (handler != null) {
handler = delegate.getHandler(); if (added_devices.length != 0) {
if (handler != null) { handler.sendMessage(Message.obtain(handler,
if (added_devices.length != 0) { MSG_DEVICES_DEVICES_ADDED,
handler.sendMessage( added_devices));
Message.obtain(handler,MSG_DEVICES_DEVICES_ADDED, added_devices)); }
} if (removed_devices.length != 0) {
if (removed_devices.length != 0) { handler.sendMessage(Message.obtain(handler,
handler.sendMessage( MSG_DEVICES_DEVICES_REMOVED,
Message.obtain(handler,MSG_DEVICES_DEVICES_REMOVED, removed_devices));
removed_devices)); }
} }
} }
} }