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

Commit 98271502 authored by Android Build Merger (Role)'s avatar Android Build Merger (Role)
Browse files

[automerger] AudioFlinger: Prevent multiple effect chains with same sessionId...

[automerger] AudioFlinger: Prevent multiple effect chains with same sessionId am: f963b2bf am: fa487695

Change-Id: Ia904577a31055344fb4a9397013d7f17bebaa720
parents b3854525 fa487695
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -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) {