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

Commit 43321684 authored by Marco Nelissen's avatar Marco Nelissen Committed by Android (Google) Code Review
Browse files

Merge "Keep effects sessions active when the caller dies."

parents 6ae7ba32 c74b93fd
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -108,6 +108,8 @@ public:
    static unsigned int  getInputFramesLost(audio_io_handle_t ioHandle);

    static int newAudioSessionId();
    static void acquireAudioSessionId(int audioSession);
    static void releaseAudioSessionId(int audioSession);

    // types of io configuration change events received with ioConfigChanged()
    enum io_config_event {
+3 −0
Original line number Diff line number Diff line
@@ -139,6 +139,9 @@ public:

    virtual int newAudioSessionId() = 0;

    virtual void acquireAudioSessionId(int audioSession) = 0;
    virtual void releaseAudioSessionId(int audioSession) = 0;

    virtual status_t queryNumberEffects(uint32_t *numEffects) = 0;

    virtual status_t queryEffect(uint32_t index, effect_descriptor_t *pDescriptor) = 0;
+3 −0
Original line number Diff line number Diff line
@@ -114,6 +114,7 @@ AudioRecord::~AudioRecord()
        }
        mAudioRecord.clear();
        IPCThreadState::self()->flushCommands();
        AudioSystem::releaseAudioSessionId(mSessionId);
    }
}

@@ -233,6 +234,7 @@ status_t AudioRecord::set(
    mInputSource = (uint8_t)inputSource;
    mFlags = flags;
    mInput = input;
    AudioSystem::acquireAudioSessionId(mSessionId);

    return NO_ERROR;
}
@@ -465,6 +467,7 @@ status_t AudioRecord::openRecord_l(
                                                       ((uint16_t)flags) << 16,
                                                       &mSessionId,
                                                       &status);

    if (record == 0) {
        LOGE("AudioFlinger could not create record track, status: %d", status);
        return status;
+14 −0
Original line number Diff line number Diff line
@@ -356,6 +356,20 @@ int AudioSystem::newAudioSessionId() {
    return af->newAudioSessionId();
}

void AudioSystem::acquireAudioSessionId(int audioSession) {
    const sp<IAudioFlinger>& af = AudioSystem::get_audio_flinger();
    if (af != 0) {
        af->acquireAudioSessionId(audioSession);
    }
}

void AudioSystem::releaseAudioSessionId(int audioSession) {
    const sp<IAudioFlinger>& af = AudioSystem::get_audio_flinger();
    if (af != 0) {
        af->releaseAudioSessionId(audioSession);
    }
}

// ---------------------------------------------------------------------------

void AudioSystem::AudioFlingerClient::binderDied(const wp<IBinder>& who) {
+2 −0
Original line number Diff line number Diff line
@@ -134,6 +134,7 @@ AudioTrack::~AudioTrack()
        }
        mAudioTrack.clear();
        IPCThreadState::self()->flushCommands();
        AudioSystem::releaseAudioSessionId(mSessionId);
    }
}

@@ -259,6 +260,7 @@ status_t AudioTrack::set(
    mNewPosition = 0;
    mUpdatePeriod = 0;
    mFlags = flags;
    AudioSystem::acquireAudioSessionId(mSessionId);

    return NO_ERROR;
}
Loading