diff options
| author | 2015-07-14 16:27:54 -0700 | |
|---|---|---|
| committer | 2015-07-14 16:27:54 -0700 | |
| commit | 1691f73de547e1bb7a6130a8d9f159452ed83d99 (patch) | |
| tree | 9d3c98d7763be6df674e132c7a9571c99739e45f | |
| parent | 093d8de298c258943ca79c1cf429f5ef5725d1bb (diff) | |
AudioManager: fix audio device callback list access
Bug: 22470616.
Change-Id: Ic59e8499557395dabe789b5fec9cb7c86c13d10c
| -rw-r--r-- | media/java/android/media/AudioManager.java | 31 |
1 files changed, 15 insertions, 16 deletions
diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java index 3bf8129d6b60..5290cacb300c 100644 --- a/media/java/android/media/AudioManager.java +++ b/media/java/android/media/AudioManager.java @@ -3859,8 +3859,8 @@ public class AudioManager { */ public void registerAudioDeviceCallback(AudioDeviceCallback callback, 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 (mPortListener == null) { mPortListener = new OnAmPortUpdateListener(); @@ -3924,21 +3924,20 @@ public class AudioManager { calcListDeltas(current_ports, mPreviousPorts, GET_DEVICES_ALL); if (added_devices.length != 0 || removed_devices.length != 0) { - Collection<NativeEventHandlerDelegate> values; synchronized (mDeviceCallbacks) { - values = mDeviceCallbacks.values(); - } - for (NativeEventHandlerDelegate delegate : values) { - handler = delegate.getHandler(); - if (handler != null) { - if (added_devices.length != 0) { - handler.sendMessage( - Message.obtain(handler,MSG_DEVICES_DEVICES_ADDED, added_devices)); - } - if (removed_devices.length != 0) { - handler.sendMessage( - Message.obtain(handler,MSG_DEVICES_DEVICES_REMOVED, - removed_devices)); + for (int i = 0; i < mDeviceCallbacks.size(); i++) { + handler = mDeviceCallbacks.valueAt(i).getHandler(); + if (handler != null) { + if (added_devices.length != 0) { + handler.sendMessage(Message.obtain(handler, + MSG_DEVICES_DEVICES_ADDED, + added_devices)); + } + if (removed_devices.length != 0) { + handler.sendMessage(Message.obtain(handler, + MSG_DEVICES_DEVICES_REMOVED, + removed_devices)); + } } } } |