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

Commit e13b58b9 authored by Steve Kondik's avatar Steve Kondik Committed by Steve Kondik
Browse files

audio: Send effect session notifications after startOutput success

 * Because we get a hellish firestorm during offload fallback, and
   our effects library really dislikes this.

Change-Id: I22adb55d04502eedf03ce22f35f8b9f61de1c7b0
parent 1ea1107d
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -246,8 +246,6 @@ status_t AudioPolicyEffects::addOutputSessionEffects(audio_io_handle_t output,
    if (idx < 0) {
        procDesc = new EffectVector(audioSession);
        mOutputSessions.add(audioSession, procDesc);

        mAudioPolicyService->onOutputSessionEffectsUpdate(stream, audioSession, true);
    } else {
        // EffectVector is existing and we just need to increase ref count
        procDesc = mOutputSessions.valueAt(idx);
@@ -275,6 +273,7 @@ status_t AudioPolicyEffects::addOutputSessionEffects(audio_io_handle_t output,
        }

        procDesc->setProcessorEnabled(true);
        return 1;
    }
    return status;
}
+10 −3
Original line number Diff line number Diff line
@@ -206,15 +206,22 @@ status_t AudioPolicyService::doStartOutput(audio_io_handle_t output,
        Mutex::Autolock _l(mLock);
        audioPolicyEffects = mAudioPolicyEffects;
    }

    status_t status = NO_ERROR;
    if (audioPolicyEffects != 0) {
        // create audio processors according to stream
        status_t status = audioPolicyEffects->addOutputSessionEffects(output, stream, session);
        if (status != NO_ERROR && status != ALREADY_EXISTS) {
        status = audioPolicyEffects->addOutputSessionEffects(output, stream, session);
        if (status <= 0 && (status != NO_ERROR && status != ALREADY_EXISTS)) {
            ALOGW("Failed to add effects on session %d", session);
        }
    }
    Mutex::Autolock _l(mLock);
    return mAudioPolicyManager->startOutput(output, stream, session);
    status_t status2 = mAudioPolicyManager->startOutput(output, stream, session);

    if (audioPolicyEffects != 0 && status > 0 && status2 == NO_ERROR) {
        onOutputSessionEffectsUpdate(stream, session, true);
    }
    return status2;
}

status_t AudioPolicyService::stopOutput(audio_io_handle_t output,