Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 977a93e6 authored by Julia Reynolds's avatar Julia Reynolds
Browse files

Fix a synchronization problem

setConfigLocked needs to be called with the lock held,
imagine that

Test: atest CondistionProviderServiceTest
Fixes: 124397432
Change-Id: I0461b1d5b08e6b83753835fcf6b2e7937c31a9fc
parent 241c2e30
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -389,8 +389,8 @@ public class ZenModeHelper {
            if (mConfig == null) return;

            newConfig = mConfig.copy();
            setAutomaticZenRuleStateLocked(newConfig, newConfig.automaticRules.get(id), condition);
        }
        setAutomaticZenRuleState(newConfig, newConfig.automaticRules.get(id), condition);
    }

    public void setAutomaticZenRuleState(Uri ruleDefinition, Condition condition) {
@@ -398,14 +398,15 @@ public class ZenModeHelper {
        synchronized (mConfig) {
            if (mConfig == null) return;
            newConfig = mConfig.copy();
        }

        setAutomaticZenRuleState(newConfig,
            setAutomaticZenRuleStateLocked(newConfig,
                    findMatchingRule(newConfig, ruleDefinition, condition),
                    condition);
        }
    }

    private void setAutomaticZenRuleState(ZenModeConfig config, ZenRule rule, Condition condition) {
    private void setAutomaticZenRuleStateLocked(ZenModeConfig config, ZenRule rule,
            Condition condition) {
        if (rule == null) return;

        rule.condition = condition;