diff options
| author | 2016-05-17 14:14:59 +0000 | |
|---|---|---|
| committer | 2016-05-17 14:14:59 +0000 | |
| commit | 8434b4cf1b0c78cc371bab445edeb2d0992b571e (patch) | |
| tree | 23d97e0c44acf3ee8ab70bb6d0d8e5acc8ce1686 | |
| parent | e82ac1b564e84881d1fd3aeb2a678581910f5869 (diff) | |
| parent | d065220a547c985be3bd17bb8f2ff473427aa978 (diff) | |
Merge "Synchronize access of mSubscriptions"
am: d065220a54
* commit 'd065220a547c985be3bd17bb8f2ff473427aa978':
Synchronize access of mSubscriptions
Change-Id: I5b28986dd770abbeeb9aaff872577230c3b56abd
| -rw-r--r-- | services/core/java/com/android/server/notification/ZenModeConditions.java | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/services/core/java/com/android/server/notification/ZenModeConditions.java b/services/core/java/com/android/server/notification/ZenModeConditions.java index c2e434979c01..22b685597c0c 100644 --- a/services/core/java/com/android/server/notification/ZenModeConditions.java +++ b/services/core/java/com/android/server/notification/ZenModeConditions.java @@ -76,14 +76,17 @@ public class ZenModeConditions implements ConditionProviders.Callback { evaluateRule(automaticRule, current, processSubscriptions); updateSnoozing(automaticRule); } - final int N = mSubscriptions.size(); - for (int i = N - 1; i >= 0; i--) { - final Uri id = mSubscriptions.keyAt(i); - final ComponentName component = mSubscriptions.valueAt(i); - if (processSubscriptions) { - if (!current.contains(id)) { - mConditionProviders.unsubscribeIfNecessary(component, id); - mSubscriptions.removeAt(i); + + synchronized (mSubscriptions) { + final int N = mSubscriptions.size(); + for (int i = N - 1; i >= 0; i--) { + final Uri id = mSubscriptions.keyAt(i); + final ComponentName component = mSubscriptions.valueAt(i); + if (processSubscriptions) { + if (!current.contains(id)) { + mConditionProviders.unsubscribeIfNecessary(component, id); + mSubscriptions.removeAt(i); + } } } } @@ -152,7 +155,9 @@ public class ZenModeConditions implements ConditionProviders.Callback { } if (processSubscriptions) { if (mConditionProviders.subscribeIfNecessary(rule.component, rule.conditionId)) { - mSubscriptions.put(rule.conditionId, rule.component); + synchronized (mSubscriptions) { + mSubscriptions.put(rule.conditionId, rule.component); + } } else { if (DEBUG) Log.d(TAG, "zmc failed to subscribe"); } |