summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Kyeongkab.Nam <Kyeongkab.Nam@sony.com> 2019-08-11 19:20:43 -0700
committer android-build-merger <android-build-merger@google.com> 2019-08-11 19:20:43 -0700
commit4e2e511a8b49408495c53d0a39e7c6e698e2fd53 (patch)
tree4ac513a3ccb62aca7163ba02c6f208672a90e76d
parent0eaa12522b03a057d45a6c1d6bbc07f8b95f8a6a (diff)
parent741db323d9a6822a5f3417de7a8d828132c50d70 (diff)
Merge "Fix a lock issue in AudioPortEventHandler" am: 0985eea389 am: 41c9e7092e am: 4b98ce6898 am: bb3c59e776
am: 741db323d9 Change-Id: I81e6ebc76cdc82e0622543bb8972beeae4bf03d1
-rw-r--r--media/java/android/media/AudioPortEventHandler.java17
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);
}
}