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

Commit 54c69a83 authored by Francois Gaffie's avatar Francois Gaffie Committed by Automerger Merge Worker
Browse files

audiopolicy: Primary Output runtime management am: fa51ed78

Original change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1460882

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I47fd366df98f6f2a137455a27b0b16cf1107ea61
parents b0d6665f fa51ed78
Loading
Loading
Loading
Loading
+12 −6
Original line number Diff line number Diff line
@@ -447,7 +447,7 @@ status_t AudioPolicyManager::handleDeviceConfigChange(audio_devices_t device,
    // Case 1: A2DP active device switches from primary to primary
    // module
    // Case 2: A2DP device config changes on primary module.
    if (audio_is_a2dp_out_device(device)) {
    if (audio_is_a2dp_out_device(device) && hasPrimaryOutput()) {
        sp<HwModule> module = mHwModules.getModuleForDeviceType(device, encodedFormat);
        audio_module_handle_t primaryHandle = mPrimaryOutput->getModuleHandle();
        if (availablePrimaryOutputDevices().contains(devDesc) &&
@@ -4677,10 +4677,7 @@ status_t AudioPolicyManager::initialize() {
        }
    }

    if (mPrimaryOutput == 0) {
        ALOGE("Failed to open primary output");
        status = NO_INIT;
    }
    ALOGW_IF(mPrimaryOutput == nullptr, "The policy configuration does not declare a primary output");

    // Silence ALOGV statements
    property_set("log.tag." LOG_TAG, "D");
@@ -4793,7 +4790,7 @@ void AudioPolicyManager::onNewAudioModulesAvailableInt(DeviceVector *newDevices)
                    setEngineDeviceConnectionState(device, AUDIO_POLICY_DEVICE_STATE_AVAILABLE);
                }
            }
            if (mPrimaryOutput == 0 &&
            if (mPrimaryOutput == nullptr &&
                    outProfile->getFlags() & AUDIO_OUTPUT_FLAG_PRIMARY) {
                mPrimaryOutput = outputDesc;
            }
@@ -4870,6 +4867,10 @@ void AudioPolicyManager::addOutput(audio_io_handle_t output,

void AudioPolicyManager::removeOutput(audio_io_handle_t output)
{
    if (mPrimaryOutput != 0 && mPrimaryOutput == mOutputs.valueFor(output)) {
        ALOGV("%s: removing primary output", __func__);
        mPrimaryOutput = nullptr;
    }
    mOutputs.removeItem(output);
    selectOutputForMusicEffects();
}
@@ -5028,6 +5029,11 @@ status_t AudioPolicyManager::checkOutputsForDevice(const sp<DeviceDescriptor>& d
                            output = AUDIO_IO_HANDLE_NONE;
                        }
                    }
                    if (mPrimaryOutput == nullptr
		            && (profile->getFlags() & AUDIO_OUTPUT_FLAG_PRIMARY) != 0) {
                        ALOGV("%s(): re-assigning mPrimaryOutput", __func__);
                        mPrimaryOutput = desc;
                    }
                }
            } else {
                output = AUDIO_IO_HANDLE_NONE;