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

Commit 71768fda authored by Vlad Popa's avatar Vlad Popa Committed by Android (Google) Code Review
Browse files

Merge "APM: apply volumes when abs volume stream changes" into main

parents 0d720d4e fb0af7ca
Loading
Loading
Loading
Loading
+15 −8
Original line number Diff line number Diff line
@@ -3564,12 +3564,8 @@ status_t AudioPolicyManager::setDeviceAbsoluteVolumeEnabled(audio_devices_t devi
    ALOGI("%s: deviceType 0x%X, enabled %d, streamToDriveAbs %d", __func__, deviceType, enabled,
          streamToDriveAbs);

    if (!enabled) {
        mAbsoluteVolumeDrivingStreams.erase(deviceType);
        return NO_ERROR;
    }

    audio_attributes_t attributesToDriveAbs = mEngine->getAttributesForStreamType(streamToDriveAbs);
    if (enabled) {
        if (attributesToDriveAbs == AUDIO_ATTRIBUTES_INITIALIZER) {
            ALOGW("%s: no attributes for stream %s, bailing out", __func__,
                  toString(streamToDriveAbs).c_str());
@@ -3577,6 +3573,17 @@ status_t AudioPolicyManager::setDeviceAbsoluteVolumeEnabled(audio_devices_t devi
        }

        mAbsoluteVolumeDrivingStreams[deviceType] = attributesToDriveAbs;
    } else {
        mAbsoluteVolumeDrivingStreams.erase(deviceType);
    }

    // apply the stream volumes regarding the new absolute mode to all the outputs
    for (size_t i = 0; i < mOutputs.size(); i++) {
        sp<SwAudioOutputDescriptor> desc = mOutputs.valueAt(i);
        ALOGV("%s: apply stream volumes for portId %d", __func__, desc->getId());
        applyStreamVolumes(desc, {deviceType}, static_cast<int>(desc->latency()) * 2);
    }

    return NO_ERROR;
}