From ffc63f45a0054aa6428f287acd1a32b8a28058af Mon Sep 17 00:00:00 2001 From: Jason Monk Date: Wed, 16 Mar 2016 15:22:15 -0400 Subject: [PATCH] Add some synchronization to hotspot callbacks Bug: 27497199 Change-Id: I792a246c0e2387e8db1fd528a7c2f20844cdd1a0 --- .../policy/HotspotControllerImpl.java | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java index f03d9e9dce849..c6b1cdf4047cd 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java @@ -69,18 +69,22 @@ public class HotspotControllerImpl implements HotspotController { @Override public void addCallback(Callback callback) { - if (callback == null || mCallbacks.contains(callback)) return; - if (DEBUG) Log.d(TAG, "addCallback " + callback); - mCallbacks.add(callback); - mReceiver.setListening(!mCallbacks.isEmpty()); + synchronized (mCallbacks) { + if (callback == null || mCallbacks.contains(callback)) return; + if (DEBUG) Log.d(TAG, "addCallback " + callback); + mCallbacks.add(callback); + mReceiver.setListening(!mCallbacks.isEmpty()); + } } @Override public void removeCallback(Callback callback) { if (callback == null) return; if (DEBUG) Log.d(TAG, "removeCallback " + callback); - mCallbacks.remove(callback); - mReceiver.setListening(!mCallbacks.isEmpty()); + synchronized (mCallbacks) { + mCallbacks.remove(callback); + mReceiver.setListening(!mCallbacks.isEmpty()); + } } @Override @@ -110,8 +114,10 @@ public class HotspotControllerImpl implements HotspotController { } private void fireCallback(boolean isEnabled) { - for (Callback callback : mCallbacks) { - callback.onHotspotChanged(isEnabled); + synchronized (mCallbacks) { + for (Callback callback : mCallbacks) { + callback.onHotspotChanged(isEnabled); + } } }