diff options
| author | 2019-08-11 18:49:12 -0700 | |
|---|---|---|
| committer | 2019-08-11 18:49:12 -0700 | |
| commit | 4b98ce68988e70ae4b4e1508b477535de8c9f44e (patch) | |
| tree | 3fd228a5d0605dfc8d15a0bba972756b57624f6c | |
| parent | 12201c4bf728fe843e85d92ee584e9b9f0aa8698 (diff) | |
| parent | 41c9e7092ea425e671cb4c6887897ebd7f5beb30 (diff) | |
Merge "Fix a lock issue in AudioPortEventHandler" am: 0985eea389
am: 41c9e7092e
Change-Id: I27966dd0d709e66a624ee1fc1b5045132a24385b
| -rw-r--r-- | media/java/android/media/AudioPortEventHandler.java | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/media/java/android/media/AudioPortEventHandler.java b/media/java/android/media/AudioPortEventHandler.java index f9a4b1e90ad2..6d9d6265f5e7 100644 --- a/media/java/android/media/AudioPortEventHandler.java +++ b/media/java/android/media/AudioPortEventHandler.java @@ -19,10 +19,12 @@ package android.media; import android.annotation.UnsupportedAppUsage; import android.os.Handler; import android.os.HandlerThread; -import android.os.Looper; import android.os.Message; -import java.util.ArrayList; + +import com.android.internal.annotations.GuardedBy; + import java.lang.ref.WeakReference; +import java.util.ArrayList; /** * The AudioPortEventHandler handles AudioManager.OnAudioPortUpdateListener callbacks @@ -33,6 +35,9 @@ import java.lang.ref.WeakReference; class AudioPortEventHandler { private Handler mHandler; private HandlerThread mHandlerThread; + private final Object mLock = new Object(); + + @GuardedBy("mLock") private final ArrayList<AudioManager.OnAudioPortUpdateListener> mListeners = new ArrayList<AudioManager.OnAudioPortUpdateListener>(); @@ -53,7 +58,7 @@ class AudioPortEventHandler { private long mJniCallback; void init() { - synchronized (this) { + synchronized (mLock) { if (mHandler != null) { return; } @@ -66,7 +71,7 @@ class AudioPortEventHandler { @Override public void handleMessage(Message msg) { ArrayList<AudioManager.OnAudioPortUpdateListener> listeners; - synchronized (this) { + synchronized (mLock) { if (msg.what == AUDIOPORT_EVENT_NEW_LISTENER) { listeners = new ArrayList<AudioManager.OnAudioPortUpdateListener>(); if (mListeners.contains(msg.obj)) { @@ -152,7 +157,7 @@ class AudioPortEventHandler { private native void native_finalize(); void registerListener(AudioManager.OnAudioPortUpdateListener l) { - synchronized (this) { + synchronized (mLock) { mListeners.add(l); } if (mHandler != null) { @@ -162,7 +167,7 @@ class AudioPortEventHandler { } void unregisterListener(AudioManager.OnAudioPortUpdateListener l) { - synchronized (this) { + synchronized (mLock) { mListeners.remove(l); } } |