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

Commit a0a348c9 authored by jiabin's avatar jiabin
Browse files

Add log for mmap policy when opening aaudio stream.

Bug: 362286449
Test: atest AAudioTests
Flag: EXEMPT log only update
Change-Id: I5036f4ba7f9a9735a58995bbfe0e513d25b50eab
parent 4fc998be
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)