Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1691f73d authored by Eric Laurent's avatar Eric Laurent
Browse files

AudioManager: fix audio device callback list access

Bug: 22470616.
Change-Id: Ic59e8499557395dabe789b5fec9cb7c86c13d10c
parent 093d8de2
Loading
Loading
Loading
Loading
+15 −16
Original line number Diff line number Diff line
@@ -3859,8 +3859,8 @@ public class AudioManager {
     */
    public void registerAudioDeviceCallback(AudioDeviceCallback callback,
            android.os.Handler handler) {
        if (callback != null && !mDeviceCallbacks.containsKey(callback)) {
        synchronized (mDeviceCallbacks) {
            if (callback != null && !mDeviceCallbacks.containsKey(callback)) {
                if (mDeviceCallbacks.size() == 0) {
                    if (mPortListener == null) {
                        mPortListener = new OnAmPortUpdateListener();
@@ -3924,26 +3924,25 @@ 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();
                    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));
                                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,
                                handler.sendMessage(Message.obtain(handler,
                                                                   MSG_DEVICES_DEVICES_REMOVED,
                                                                   removed_devices));
                            }
                        }
                    }
                }
            }
        }

        mPreviousPorts = current_ports;
    }