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

Commit 2b683448 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Audio policy: uid device affinity deterministic rule"

parents 9a2e50be 17dc1782
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -143,11 +143,18 @@ status_t AudioMix::writeToParcel(Parcel *parcel) const
    return NO_ERROR;
}

void AudioMix::excludeUid(uid_t uid) const {
void AudioMix::setExcludeUid(uid_t uid) const {
    AudioMixMatchCriterion crit;
    crit.mRule = RULE_EXCLUDE_UID;
    crit.mValue.mUid = uid;
    mCriteria.add(crit);
}

void AudioMix::setMatchUid(uid_t uid) const {
    AudioMixMatchCriterion crit;
    crit.mRule = RULE_MATCH_UID;
    crit.mValue.mUid = uid;
    mCriteria.add(crit);
}

} // namespace android
+2 −1
Original line number Diff line number Diff line
@@ -100,7 +100,8 @@ public:
    status_t readFromParcel(Parcel *parcel);
    status_t writeToParcel(Parcel *parcel) const;

    void excludeUid(uid_t uid) const;
    void setExcludeUid(uid_t uid) const;
    void setMatchUid(uid_t uid) const;

    mutable Vector<AudioMixMatchCriterion> mCriteria;
    uint32_t        mMixType;
+5 −3
Original line number Diff line number Diff line
@@ -360,10 +360,12 @@ status_t AudioPolicyMixCollection::setUidDeviceAffinities(uid_t uid,
                break;
            }
        }
        if (!deviceMatch) {
        if (deviceMatch) {
            mix->setMatchUid(uid);
        } else {
            // this mix doesn't go to one of the listed devices for the given uid,
            // modify its rules to exclude the uid
            mix->excludeUid(uid);
            mix->setExcludeUid(uid);
        }
    }

@@ -382,7 +384,7 @@ status_t AudioPolicyMixCollection::removeUidDeviceAffinities(uid_t uid) {
        for (size_t j = 0; j < mix->mCriteria.size(); j++) {
            const uint32_t rule = mix->mCriteria[j].mRule;
            // is this rule affecting the uid?
            if (rule == RULE_EXCLUDE_UID
            if ((rule == RULE_EXCLUDE_UID || rule == RULE_MATCH_UID)
                    && uid == mix->mCriteria[j].mValue.mUid) {
                foundUidRule = true;
                criteriaToRemove.push_back(j);