summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2020-04-23 20:26:05 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2020-04-23 20:26:05 +0000
commit19df2d0dfa75acecef66737dee97e605bd2b00a3 (patch)
tree9b39c35928c2bd5cc04a156e99b7202e8a28c5cc
parent20726863b9b142a162f0fcb51c30e44931ba5967 (diff)
parent60f54981717ff8d0a5ad02f7de487daf0b16e690 (diff)
Merge "HDM: Resolve concurrent access issue - defer execution" into rvc-dev
-rw-r--r--service/java/com/android/server/wifi/HalDeviceManager.java7
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> {