Loading services/audioflinger/AudioFlinger.cpp +15 −0 Original line number Diff line number Diff line Loading @@ -2779,6 +2779,21 @@ sp<IEffect> AudioFlinger::createEffect( io = mPlaybackThreads.keyAt(0); } ALOGV("createEffect() got io %d for effect %s", io, desc.name); } else if (checkPlaybackThread_l(io) != nullptr) { // allow only one effect chain per sessionId on mPlaybackThreads. for (size_t i = 0; i < mPlaybackThreads.size(); i++) { const audio_io_handle_t checkIo = mPlaybackThreads.keyAt(i); if (io == checkIo) continue; const uint32_t sessionType = mPlaybackThreads.valueAt(i)->hasAudioSession(sessionId); if ((sessionType & ThreadBase::EFFECT_SESSION) != 0) { ALOGE("%s: effect %s io %d denied because session %d effect exists on io %d", __func__, desc.name, (int)io, (int)sessionId, (int)checkIo); android_errorWriteLog(0x534e4554, "123237974"); lStatus = BAD_VALUE; goto Exit; } } } ThreadBase *thread = checkRecordThread_l(io); if (thread == NULL) { Loading Loading
services/audioflinger/AudioFlinger.cpp +15 −0 Original line number Diff line number Diff line Loading @@ -2779,6 +2779,21 @@ sp<IEffect> AudioFlinger::createEffect( io = mPlaybackThreads.keyAt(0); } ALOGV("createEffect() got io %d for effect %s", io, desc.name); } else if (checkPlaybackThread_l(io) != nullptr) { // allow only one effect chain per sessionId on mPlaybackThreads. for (size_t i = 0; i < mPlaybackThreads.size(); i++) { const audio_io_handle_t checkIo = mPlaybackThreads.keyAt(i); if (io == checkIo) continue; const uint32_t sessionType = mPlaybackThreads.valueAt(i)->hasAudioSession(sessionId); if ((sessionType & ThreadBase::EFFECT_SESSION) != 0) { ALOGE("%s: effect %s io %d denied because session %d effect exists on io %d", __func__, desc.name, (int)io, (int)sessionId, (int)checkIo); android_errorWriteLog(0x534e4554, "123237974"); lStatus = BAD_VALUE; goto Exit; } } } ThreadBase *thread = checkRecordThread_l(io); if (thread == NULL) { Loading