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

Commit 3067a366 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add log for mmap policy when opening aaudio stream." into main

parents 16b37bf8 a0a348c9
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -602,6 +602,7 @@ AAUDIO_API aaudio_policy_t AAudio_getMMapPolicy() {
}

AAUDIO_API aaudio_result_t AAudio_setMMapPolicy(aaudio_policy_t policy) {
    ALOGD("%s(%d)", __func__, policy);
    return AudioGlobal_setMMapPolicy(policy);
}

+12 −4
Original line number Diff line number Diff line
@@ -109,10 +109,12 @@ aaudio_result_t AudioStreamBuilder::build(AudioStream** streamPtr) {

    std::vector<AudioMMapPolicyInfo> policyInfos;
    aaudio_policy_t mmapPolicy = AudioGlobal_getMMapPolicy();
    if (android::AudioSystem::getMmapPolicyInfo(
            AudioMMapPolicyType::DEFAULT, &policyInfos) == NO_ERROR) {
    ALOGD("%s, global mmap policy is %d", __func__, mmapPolicy);
    if (status_t status = android::AudioSystem::getMmapPolicyInfo(
            AudioMMapPolicyType::DEFAULT, &policyInfos); status == NO_ERROR) {
        aaudio_policy_t systemMmapPolicy = AAudio_getAAudioPolicy(
                policyInfos, AAUDIO_MMAP_POLICY_DEFAULT_AIDL);
        ALOGD("%s, system mmap policy is %d", __func__, systemMmapPolicy);
        if (mmapPolicy == AAUDIO_POLICY_ALWAYS && systemMmapPolicy == AAUDIO_POLICY_NEVER) {
            // No need to try as AAudioService is not created and the client only wants MMAP path.
            return AAUDIO_ERROR_NO_SERVICE;
@@ -125,6 +127,7 @@ aaudio_result_t AudioStreamBuilder::build(AudioStream** streamPtr) {
            mmapPolicy = systemMmapPolicy;
        }
    } else {
        ALOGD("%s, failed to query system mmap policy, error=%d", __func__, status);
        // If it fails querying mmap policy info, it is highly possible that the AAudioService is
        // not created. In this case, we don't try mmap path.
        if (mmapPolicy == AAUDIO_POLICY_ALWAYS) {
@@ -136,17 +139,22 @@ aaudio_result_t AudioStreamBuilder::build(AudioStream** streamPtr) {
    if (mmapPolicy == AAUDIO_UNSPECIFIED) {
        mmapPolicy = AAUDIO_MMAP_POLICY_DEFAULT;
    }
    ALOGD("%s, final mmap policy is %d", __func__, mmapPolicy);

    policyInfos.clear();
    aaudio_policy_t mmapExclusivePolicy = AAUDIO_UNSPECIFIED;
    if (android::AudioSystem::getMmapPolicyInfo(
            AudioMMapPolicyType::EXCLUSIVE, &policyInfos) == NO_ERROR) {
    if (status_t status = android::AudioSystem::getMmapPolicyInfo(
            AudioMMapPolicyType::EXCLUSIVE, &policyInfos); status == NO_ERROR) {
        mmapExclusivePolicy = AAudio_getAAudioPolicy(
                policyInfos, AAUDIO_MMAP_EXCLUSIVE_POLICY_DEFAULT_AIDL);
        ALOGD("%s, system mmap exclusive policy is %d", __func__, mmapExclusivePolicy);
    } else {
        ALOGD("%s, failed to query mmap exclusive policy, error=%d", __func__, status);
    }
    if (mmapExclusivePolicy == AAUDIO_UNSPECIFIED) {
        mmapExclusivePolicy = AAUDIO_MMAP_EXCLUSIVE_POLICY_DEFAULT;
    }
    ALOGD("%s, final mmap exclusive policy is %d", __func__, mmapExclusivePolicy);

    aaudio_sharing_mode_t sharingMode = getSharingMode();
    if ((sharingMode == AAUDIO_SHARING_MODE_EXCLUSIVE)