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

Commit 0eb5c884 authored by Andy Hung's avatar Andy Hung Committed by Android (Google) Code Review
Browse files

Merge changes from topic "am-f4faa2c1-7416-4076-9f85-b0cd734dba65" into nyc-mr1-dev

* changes:
  [automerger] AudioFlinger: Prevent multiple effect chains with same sessionId am: f963b2bf am: fa487695
  [automerger] AudioFlinger: Prevent multiple effect chains with same sessionId am: f963b2bf
  AudioFlinger: Prevent multiple effect chains with same sessionId
parents f60d52ae 98271502
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -2783,6 +2783,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) {