diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2020-04-23 20:26:05 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-04-23 20:26:05 +0000 |
commit | 19df2d0dfa75acecef66737dee97e605bd2b00a3 (patch) | |
tree | 9b39c35928c2bd5cc04a156e99b7202e8a28c5cc | |
parent | 20726863b9b142a162f0fcb51c30e44931ba5967 (diff) | |
parent | 60f54981717ff8d0a5ad02f7de487daf0b16e690 (diff) |
Merge "HDM: Resolve concurrent access issue - defer execution" into rvc-dev
-rw-r--r-- | service/java/com/android/server/wifi/HalDeviceManager.java | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/service/java/com/android/server/wifi/HalDeviceManager.java b/service/java/com/android/server/wifi/HalDeviceManager.java index e47a33efb..783c91adf 100644 --- a/service/java/com/android/server/wifi/HalDeviceManager.java +++ b/service/java/com/android/server/wifi/HalDeviceManager.java @@ -2087,15 +2087,20 @@ public class HalDeviceManager { private void dispatchAllDestroyedListeners() { if (VDBG) Log.d(TAG, "dispatchAllDestroyedListeners"); + List<InterfaceDestroyedListenerProxy> triggerList = new ArrayList<>(); synchronized (mLock) { for (InterfaceCacheEntry cacheEntry: mInterfaceInfoCache.values()) { for (InterfaceDestroyedListenerProxy listener : cacheEntry.destroyedListeners) { - listener.trigger(); + triggerList.add(listener); } cacheEntry.destroyedListeners.clear(); // for insurance } mInterfaceInfoCache.clear(); } + + for (InterfaceDestroyedListenerProxy listener : triggerList) { + listener.trigger(); + } } private abstract class ListenerProxy<LISTENER> { |