Merge "Synchronize access of mSubscriptions" am: d065220a54 am: 8434b4cf1b

am: 6e22f2dad1

* commit '6e22f2dad1647be6481861f8225174bab26ba7a5':
  Synchronize access of mSubscriptions

Change-Id: Ic68abe3de06f8fb472ecf3e2854c75b69aaff584
This commit is contained in:
Shibin George
2016-05-17 14:24:48 +00:00
committed by android-build-merger

View File

@@ -72,14 +72,17 @@ public class ZenModeConditions implements ConditionProviders.Callback {
evaluateRule(automaticRule, current, processSubscriptions); evaluateRule(automaticRule, current, processSubscriptions);
updateSnoozing(automaticRule); updateSnoozing(automaticRule);
} }
final int N = mSubscriptions.size();
for (int i = N - 1; i >= 0; i--) { synchronized (mSubscriptions) {
final Uri id = mSubscriptions.keyAt(i); final int N = mSubscriptions.size();
final ComponentName component = mSubscriptions.valueAt(i); for (int i = N - 1; i >= 0; i--) {
if (processSubscriptions) { final Uri id = mSubscriptions.keyAt(i);
if (!current.contains(id)) { final ComponentName component = mSubscriptions.valueAt(i);
mConditionProviders.unsubscribeIfNecessary(component, id); if (processSubscriptions) {
mSubscriptions.removeAt(i); if (!current.contains(id)) {
mConditionProviders.unsubscribeIfNecessary(component, id);
mSubscriptions.removeAt(i);
}
} }
} }
} }
@@ -145,7 +148,9 @@ public class ZenModeConditions implements ConditionProviders.Callback {
} }
if (processSubscriptions) { if (processSubscriptions) {
if (mConditionProviders.subscribeIfNecessary(rule.component, rule.conditionId)) { if (mConditionProviders.subscribeIfNecessary(rule.component, rule.conditionId)) {
mSubscriptions.put(rule.conditionId, rule.component); synchronized (mSubscriptions) {
mSubscriptions.put(rule.conditionId, rule.component);
}
} else { } else {
if (DEBUG) Log.d(TAG, "zmc failed to subscribe"); if (DEBUG) Log.d(TAG, "zmc failed to subscribe");
} }