summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Shibin George <shibing@codeaurora.org> 2016-05-17 14:14:59 +0000
committer android-build-merger <android-build-merger@google.com> 2016-05-17 14:14:59 +0000
commit8434b4cf1b0c78cc371bab445edeb2d0992b571e (patch)
tree23d97e0c44acf3ee8ab70bb6d0d8e5acc8ce1686
parente82ac1b564e84881d1fd3aeb2a678581910f5869 (diff)
parentd065220a547c985be3bd17bb8f2ff473427aa978 (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.java23
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");
}