Add AudioFlinger to Thread thread safety annotations
Test: atest AudioTrackTest AudioRecordTest
Test: atest AAudioTests AudioTrackOffloadTest
Test: atest AudioPlaybackCaptureTest
Test: Camera YouTube
Bug: 275748373
Merged-In: I9b4573be8f5f6546d6979f69a9ad8d19e5d95bc6
Change-Id: I9b4573be8f5f6546d6979f69a9ad8d19e5d95bc6
diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp
index 9c17e4b..d971da0 100644
--- a/services/audioflinger/Threads.cpp
+++ b/services/audioflinger/Threads.cpp
@@ -697,7 +697,7 @@
status_t ThreadBase::setParameters(const String8& keyValuePairs)
{
ALOGV("ThreadBase::setParameters() %s", keyValuePairs.c_str());
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
return sendSetParameterConfigEvent_l(keyValuePairs);
}
@@ -736,7 +736,7 @@
void ThreadBase::sendIoConfigEvent(audio_io_config_event_t event, pid_t pid,
audio_port_handle_t portId)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
sendIoConfigEvent_l(event, pid, portId);
}
@@ -760,7 +760,7 @@
void ThreadBase::sendPrioConfigEvent(pid_t pid, pid_t tid, int32_t prio, bool forApp)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
sendPrioConfigEvent_l(pid, tid, prio, forApp);
}
@@ -795,7 +795,7 @@
const struct audio_patch *patch,
audio_patch_handle_t *handle)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
sp<ConfigEvent> configEvent = (ConfigEvent *)new CreateAudioPatchConfigEvent(*patch, *handle);
status_t status = sendConfigEvent_l(configEvent);
if (status == NO_ERROR) {
@@ -809,7 +809,7 @@
status_t ThreadBase::sendReleaseAudioPatchConfigEvent(
const audio_patch_handle_t handle)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
sp<ConfigEvent> configEvent = (ConfigEvent *)new ReleaseAudioPatchConfigEvent(handle);
return sendConfigEvent_l(configEvent);
}
@@ -821,7 +821,7 @@
// The update out device operation is only for record thread.
return INVALID_OPERATION;
}
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
sp<ConfigEvent> configEvent = (ConfigEvent *)new UpdateOutDevicesConfigEvent(outDevices);
return sendConfigEvent_l(configEvent);
}
@@ -836,7 +836,7 @@
void ThreadBase::sendCheckOutputStageEffectsEvent()
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
sendCheckOutputStageEffectsEvent_l();
}
@@ -931,7 +931,7 @@
break;
}
{
- audio_utils::lock_guard _l(event->mutex());
+ audio_utils::lock_guard _l(event->mutex());
if (event->mWaitStatus) {
event->mWaitStatus = false;
event->mCondition.notify_one();
@@ -1153,7 +1153,7 @@
void ThreadBase::acquireWakeLock()
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
acquireWakeLock_l();
}
@@ -1207,7 +1207,7 @@
void ThreadBase::releaseWakeLock()
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
releaseWakeLock_l();
}
@@ -1266,7 +1266,7 @@
void ThreadBase::clearPowerManager()
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
releaseWakeLock_l();
mPowerManager.clear();
}
@@ -1645,7 +1645,7 @@
ALOGV("createEffect_l() thread %p effect %s on session %d", this, desc->name, sessionId);
{ // scope for mutex()
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
lStatus = checkEffectCompatibility_l(desc, sessionId);
if (probe || lStatus != NO_ERROR) {
@@ -1707,7 +1707,7 @@
Exit:
if (!probe && lStatus != NO_ERROR && lStatus != ALREADY_EXISTS) {
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
if (effectCreated) {
chain->removeEffect_l(effect);
}
@@ -1727,7 +1727,7 @@
bool remove = false;
sp<IAfEffectModule> effect;
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
sp<IAfEffectBase> effectBase = handle->effect().promote();
if (effectBase == nullptr) {
return;
@@ -1753,7 +1753,7 @@
void ThreadBase::onEffectEnable(const sp<IAfEffectModule>& effect) {
if (isOffloadOrMmap()) {
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
broadcast_l();
}
if (!effect->isOffloadable()) {
@@ -1769,7 +1769,7 @@
void ThreadBase::onEffectDisable() {
if (isOffloadOrMmap()) {
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
broadcast_l();
}
}
@@ -1777,7 +1777,7 @@
sp<IAfEffectModule> ThreadBase::getEffect(audio_session_t sessionId,
int effectId) const
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
return getEffect_l(sessionId, effectId);
}
@@ -1794,9 +1794,9 @@
return chain != nullptr ? chain->getEffectIds() : std::vector<int>{};
}
-// PlaybackThread::addEffect_l() must be called with AudioFlinger::mutex() and
-// PlaybackThread::mutex() held
-status_t ThreadBase::addEffect_l(const sp<IAfEffectModule>& effect)
+// PlaybackThread::addEffect_ll() must be called with AudioFlinger::mutex() and
+// ThreadBase::mutex() held
+status_t ThreadBase::addEffect_ll(const sp<IAfEffectModule>& effect)
{
// check for existing effect chain with the requested audio session
audio_session_t sessionId = effect->sessionId();
@@ -1804,22 +1804,22 @@
bool chainCreated = false;
ALOGD_IF((mType == OFFLOAD) && !effect->isOffloadable(),
- "addEffect_l() on offloaded thread %p: effect %s does not support offload flags %#x",
- this, effect->desc().name, effect->desc().flags);
+ "%s: on offloaded thread %p: effect %s does not support offload flags %#x",
+ __func__, this, effect->desc().name, effect->desc().flags);
if (chain == 0) {
// create a new chain for this session
- ALOGV("addEffect_l() new effect chain for session %d", sessionId);
+ ALOGV("%s: new effect chain for session %d", __func__, sessionId);
chain = IAfEffectChain::create(this, sessionId);
addEffectChain_l(chain);
chain->setStrategy(getStrategyForSession_l(sessionId));
chainCreated = true;
}
- ALOGV("addEffect_l() %p chain %p effect %p", this, chain.get(), effect.get());
+ ALOGV("%s: %p chain %p effect %p", __func__, this, chain.get(), effect.get());
if (chain->getEffectFromId_l(effect->id()) != 0) {
- ALOGW("addEffect_l() %p effect %s already present in chain %p",
- this, effect->desc().name, chain.get());
+ ALOGW("%s: %p effect %s already present in chain %p",
+ __func__, this, effect->desc().name, chain.get());
return BAD_VALUE;
}
@@ -1881,7 +1881,7 @@
sp<IAfEffectChain> ThreadBase::getEffectChain(audio_session_t sessionId) const
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
return getEffectChain_l(sessionId);
}
@@ -1899,7 +1899,7 @@
void ThreadBase::setMode(audio_mode_t mode)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
size_t size = mEffectChains.size();
for (size_t i = 0; i < size; i++) {
mEffectChains[i]->setMode_l(mode);
@@ -1919,7 +1919,7 @@
void ThreadBase::systemReady()
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
if (mSystemReady) {
return;
}
@@ -2484,7 +2484,7 @@
// check compatibility with audio effects.
{ // scope for mutex()
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
for (audio_session_t session : {
AUDIO_SESSION_DEVICE,
AUDIO_SESSION_OUTPUT_STAGE,
@@ -2691,7 +2691,7 @@
}
{ // scope for mutex()
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
// all tracks in same audio session must share the same routing strategy otherwise
// conflicts will happen when tracks are moved from one output to another by audio policy
@@ -2735,7 +2735,7 @@
}
mTracks.add(track);
{
- audio_utils::lock_guard _atCbL(audioTrackCbMutex());
+ audio_utils::lock_guard _atCbL(audioTrackCbMutex());
if (callback.get() != nullptr) {
mAudioTrackCallbacks.emplace(track, callback);
}
@@ -2787,7 +2787,7 @@
uint32_t PlaybackThread::latency() const
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
return latency_l();
}
uint32_t PlaybackThread::latency_l() const
@@ -2801,7 +2801,7 @@
void PlaybackThread::setMasterVolume(float value)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
// Don't apply master volume in SW if our HAL can do it for us.
if (mOutput && mOutput->audioHwDev &&
mOutput->audioHwDev->canSetMasterVolume()) {
@@ -2821,7 +2821,7 @@
if (isDuplicating()) {
return;
}
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
// Don't apply master mute in SW if our HAL can do it for us.
if (mOutput && mOutput->audioHwDev &&
mOutput->audioHwDev->canSetMasterMute()) {
@@ -2833,21 +2833,21 @@
void PlaybackThread::setStreamVolume(audio_stream_type_t stream, float value)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
mStreamTypes[stream].volume = value;
broadcast_l();
}
void PlaybackThread::setStreamMute(audio_stream_type_t stream, bool muted)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
mStreamTypes[stream].mute = muted;
broadcast_l();
}
float PlaybackThread::streamVolume(audio_stream_type_t stream) const
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
return mStreamTypes[stream].volume;
}
@@ -2922,7 +2922,7 @@
{
// TODO(b/184194780): Use the vibrator information from the vibrator that will be
// used to play this track.
- audio_utils::lock_guard _l(mAfThreadCallback->mutex());
+ audio_utils::lock_guard _l(mAfThreadCallback->mutex());
vibratorInfo = std::move(mAfThreadCallback->getDefaultVibratorInfo_l());
}
mutex().lock();
@@ -2991,7 +2991,7 @@
mTracks.remove(track);
{
- audio_utils::lock_guard _atCbL(audioTrackCbMutex());
+ audio_utils::lock_guard _atCbL(audioTrackCbMutex());
mAudioTrackCallbacks.erase(track);
}
if (track->isFastTrack()) {
@@ -3010,7 +3010,7 @@
String8 PlaybackThread::getParameters(const String8& keys)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
String8 out_s8;
if (initCheck() == NO_ERROR && mOutput->stream->getParameters(keys, &out_s8) == OK) {
return out_s8;
@@ -3019,7 +3019,7 @@
}
status_t DirectOutputThread::selectPresentation(int presentationId, int programId) {
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
if (!isStreamInitialized()) {
return NO_INIT;
}
@@ -3089,7 +3089,7 @@
audio_utils::metadata::ByteString metaDataStr =
audio_utils::metadata::byteStringFromData(metadata);
std::vector metadataVec(metaDataStr.begin(), metaDataStr.end());
- audio_utils::lock_guard _l(audioTrackCbMutex());
+ audio_utils::lock_guard _l(audioTrackCbMutex());
for (const auto& callbackPair : mAudioTrackCallbacks) {
callbackPair.second->onCodecFormatChanged(metadataVec);
}
@@ -3098,7 +3098,7 @@
void PlaybackThread::resetWriteBlocked(uint32_t sequence)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
// reject out of sequence requests
if ((mWriteAckSequence & 1) && (sequence == mWriteAckSequence)) {
mWriteAckSequence &= ~1;
@@ -3108,7 +3108,7 @@
void PlaybackThread::resetDraining(uint32_t sequence)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
// reject out of sequence requests
if ((mDrainSequence & 1) && (sequence == mDrainSequence)) {
// Register discontinuity when HW drain is completed because that can cause
@@ -3122,6 +3122,8 @@
}
void PlaybackThread::readOutputParameters_l()
+NO_THREAD_SAFETY_ANALYSIS
+// 'moveEffectChain_ll' requires holding mutex 'AudioFlinger_Mutex' exclusively
{
// unfortunately we have no way of recovering from errors here, hence the LOG_ALWAYS_FATAL
const audio_config_base_t audioConfig = mOutput->getAudioProperties();
@@ -3289,10 +3291,11 @@
// Note that mutex() is not held when readOutputParameters_l() is called from the constructor
// but in this case nothing is done below as no audio sessions have effect yet so it doesn't
// matter.
- // create a copy of mEffectChains as calling moveEffectChain_l() can reorder some effect chains
+ // create a copy of mEffectChains as calling moveEffectChain_ll()
+ // can reorder some effect chains
Vector<sp<IAfEffectChain>> effectChains = mEffectChains;
for (size_t i = 0; i < effectChains.size(); i ++) {
- mAfThreadCallback->moveEffectChain_l(effectChains[i]->sessionId(),
+ mAfThreadCallback->moveEffectChain_ll(effectChains[i]->sessionId(),
this/* srcThread */, this/* dstThread */);
}
@@ -3350,7 +3353,7 @@
if (halFrames == NULL || dspFrames == NULL) {
return BAD_VALUE;
}
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
if (initCheck() != NO_ERROR) {
return INVALID_OPERATION;
}
@@ -3391,13 +3394,13 @@
AudioStreamOut* PlaybackThread::getOutput() const
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
return mOutput;
}
AudioStreamOut* PlaybackThread::clearOutput()
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
AudioStreamOut *output = mOutput;
mOutput = NULL;
// FIXME FastMixer might also have a raw ptr to mOutputSink;
@@ -3428,7 +3431,7 @@
return BAD_VALUE;
}
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
for (size_t i = 0; i < mTracks.size(); ++i) {
sp<IAfTrack> track = mTracks[i];
@@ -3596,7 +3599,7 @@
void PlaybackThread::threadLoop_exit()
{
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
for (size_t i = 0; i < mTracks.size(); i++) {
sp<IAfTrack> track = mTracks[i];
track->invalidate();
@@ -3664,12 +3667,12 @@
void PlaybackThread::invalidateTracks(audio_stream_type_t streamType)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
invalidateTracks_l(streamType);
}
void PlaybackThread::invalidateTracks(std::set<audio_port_handle_t>& portIds) {
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
invalidateTracks_l(portIds);
}
@@ -3873,7 +3876,7 @@
status_t PlaybackThread::attachAuxEffect(
const sp<IAfTrack>& track, int EffectId)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
return attachAuxEffect_l(track, EffectId);
}
@@ -4404,7 +4407,7 @@
const double processMs =
(lastIoBeginNs - mLastIoEndNs) * 1e-6;
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
mIoJitterMs.add(jitterMs);
mProcessTimeMs.add(processMs);
@@ -4933,13 +4936,13 @@
void PlaybackThread::addPatchTrack(const sp<IAfPatchTrack>& track)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
mTracks.add(track);
}
void PlaybackThread::deletePatchTrack(const sp<IAfPatchTrack>& track)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
destroyTrack_l(track);
}
@@ -5189,7 +5192,7 @@
void MixerThread::onFirstRef() {
PlaybackThread::onFirstRef();
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
if (mOutput != nullptr && mOutput->stream != nullptr) {
status_t status = mOutput->stream->setLatencyModeCallback(this);
if (status != INVALID_OPERATION) {
@@ -5304,7 +5307,7 @@
bool PlaybackThread::waitingAsyncCallback()
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
return waitingAsyncCallback_l();
}
@@ -6486,14 +6489,14 @@
if (modes == nullptr) {
return BAD_VALUE;
}
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
*modes = mSupportedLatencyModes;
return NO_ERROR;
}
void MixerThread::onRecommendedLatencyModeChanged(
std::vector<audio_latency_mode_t> modes) {
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
if (modes != mSupportedLatencyModes) {
ALOGD("%s: thread(%d) supported latency modes: %s",
__func__, mId, toString(modes).c_str());
@@ -6544,7 +6547,7 @@
void DirectOutputThread::setMasterBalance(float balance)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
if (mMasterBalance != balance) {
mMasterBalance.store(balance);
mBalance.computeStereoBalance(balance, &mMasterBalanceLeft, &mMasterBalanceRight);
@@ -6924,7 +6927,7 @@
void DirectOutputThread::threadLoop_exit()
{
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
for (size_t i = 0; i < mTracks.size(); i++) {
if (mTracks[i]->isFlushPending()) {
mTracks[i]->flushAck();
@@ -7131,21 +7134,21 @@
void AsyncCallbackThread::exit()
{
ALOGV("AsyncCallbackThread::exit");
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
requestExit();
mWaitWorkCV.notify_all();
}
void AsyncCallbackThread::setWriteBlocked(uint32_t sequence)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
// bit 0 is cleared
mWriteAckSequence = sequence << 1;
}
void AsyncCallbackThread::resetWriteBlocked()
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
// ignore unexpected callbacks
if (mWriteAckSequence & 2) {
mWriteAckSequence |= 1;
@@ -7155,14 +7158,14 @@
void AsyncCallbackThread::setDraining(uint32_t sequence)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
// bit 0 is cleared
mDrainSequence = sequence << 1;
}
void AsyncCallbackThread::resetDraining()
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
// ignore unexpected callbacks
if (mDrainSequence & 2) {
mDrainSequence |= 1;
@@ -7172,7 +7175,7 @@
void AsyncCallbackThread::setAsyncError()
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
mAsyncError = true;
mWaitWorkCV.notify_one();
}
@@ -7470,7 +7473,7 @@
bool OffloadThread::waitingAsyncCallback()
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
return waitingAsyncCallback_l();
}
@@ -7497,14 +7500,14 @@
void OffloadThread::invalidateTracks(audio_stream_type_t streamType)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
if (PlaybackThread::invalidateTracks_l(streamType)) {
mFlushPending = true;
}
}
void OffloadThread::invalidateTracks(std::set<audio_port_handle_t>& portIds) {
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
if (PlaybackThread::invalidateTracks_l(portIds)) {
mFlushPending = true;
}
@@ -7646,7 +7649,7 @@
void DuplicatingThread::addOutputTrack(IAfPlaybackThread* thread)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
// The downstream MixerThread consumes thread->frameCount() amount of frames per mix pass.
// Adjust for thread->sampleRate() to determine minimum buffer frame count.
// Then triple buffer because Threads do not run synchronously and may not be clock locked.
@@ -7683,7 +7686,7 @@
void DuplicatingThread::removeOutputTrack(IAfPlaybackThread* thread)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
for (size_t i = 0; i < mOutputTracks.size(); i++) {
if (mOutputTracks[i]->thread() == thread) {
mOutputTracks[i]->destroy();
@@ -7832,18 +7835,20 @@
if (mode != AUDIO_LATENCY_MODE_LOW && mode != AUDIO_LATENCY_MODE_FREE) {
return BAD_VALUE;
}
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
mRequestedLatencyMode = mode;
return NO_ERROR;
}
void SpatializerThread::checkOutputStageEffects()
+NO_THREAD_SAFETY_ANALYSIS
+// 'createEffect_l' requires holding mutex 'AudioFlinger_Mutex' exclusively
{
bool hasVirtualizer = false;
bool hasDownMixer = false;
sp<IAfEffectHandle> finalDownMixer;
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
sp<IAfEffectChain> chain = getEffectChain_l(AUDIO_SESSION_OUTPUT_STAGE);
if (chain != 0) {
hasVirtualizer = chain->getEffectFromType_l(FX_IID_SPATIALIZER) != nullptr;
@@ -7884,7 +7889,7 @@
}
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
mFinalDownMixer = finalDownMixer;
}
}
@@ -8090,7 +8095,7 @@
void RecordThread::preExit()
{
ALOGV(" preExit()");
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
for (size_t i = 0; i < mTracks.size(); i++) {
sp<IAfRecordTrack> track = mTracks[i];
track->invalidate();
@@ -8108,7 +8113,7 @@
reacquire_wakelock:
sp<IAfRecordTrack> activeTrack;
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
acquireWakeLock_l();
}
@@ -8636,7 +8641,7 @@
{0, 0} /* lastTimestamp */, mSampleRate);
const double processMs = (lastIoBeginNs - mLastIoEndNs) * 1e-6;
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
mIoJitterMs.add(jitterMs);
mProcessTimeMs.add(processMs);
}
@@ -8649,7 +8654,7 @@
standbyIfNotAlreadyInStandby();
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
for (size_t i = 0; i < mTracks.size(); i++) {
sp<IAfRecordTrack> track = mTracks[i];
track->invalidate();
@@ -8806,7 +8811,7 @@
mFastTrackAvail
) {
// check compatibility with audio effects.
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
// Do not accept FAST flag if the session has software effects
sp<IAfEffectChain> chain = getEffectChain_l(sessionId);
if (chain != 0) {
@@ -8871,7 +8876,7 @@
*pNotificationFrameCount = notificationFrameCount;
{ // scope for mutex()
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
int32_t startFrames = -1;
if (!mSharedAudioPackageName.empty()
&& mSharedAudioPackageName == attributionSource.packageName
@@ -8932,7 +8937,7 @@
{
// This section is a rendezvous between binder thread executing start() and RecordThread
- audio_utils::lock_guard lock(mutex());
+ audio_utils::lock_guard lock(mutex());
if (recordTrack->isInvalid()) {
recordTrack->clearSyncStartEvent();
ALOGW("%s track %d: invalidated before startInput", __func__, recordTrack->portId());
@@ -9066,7 +9071,7 @@
audio_session_t eventSession = event->triggerSession();
status_t ret = NAME_NOT_FOUND;
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
for (size_t i = 0; i < mTracks.size(); i++) {
sp<IAfRecordTrack> track = mTracks[i];
@@ -9085,7 +9090,7 @@
std::vector<media::MicrophoneInfoFw>* activeMicrophones) const
{
ALOGV("RecordThread::getActiveMicrophones");
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
if (!isStreamInitialized()) {
return NO_INIT;
}
@@ -9097,7 +9102,7 @@
audio_microphone_direction_t direction)
{
ALOGV("setPreferredMicrophoneDirection(%d)", direction);
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
if (!isStreamInitialized()) {
return NO_INIT;
}
@@ -9107,7 +9112,7 @@
status_t RecordThread::setPreferredMicrophoneFieldDimension(float zoom)
{
ALOGV("setPreferredMicrophoneFieldDimension(%f)", zoom);
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
if (!isStreamInitialized()) {
return NO_INIT;
}
@@ -9117,7 +9122,7 @@
status_t RecordThread::shareAudioHistory(
const std::string& sharedAudioPackageName, audio_session_t sharedSessionId,
int64_t sharedAudioStartMs) {
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
return shareAudioHistory_l(sharedAudioPackageName, sharedSessionId, sharedAudioStartMs);
}
@@ -9283,7 +9288,7 @@
void RecordThread::setRecordSilenced(audio_port_handle_t portId, bool silenced)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
for (size_t i = 0; i < mTracks.size() ; i++) {
sp<IAfRecordTrack> track = mTracks[i];
if (track != 0 && track->portId() == portId) {
@@ -9408,7 +9413,7 @@
void RecordThread::checkBtNrec()
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
checkBtNrec_l();
}
@@ -9517,7 +9522,7 @@
String8 RecordThread::getParameters(const String8& keys)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
if (initCheck() == NO_ERROR) {
String8 out_s8;
if (mInput->stream->getParameters(keys, &out_s8) == OK) {
@@ -9593,7 +9598,7 @@
uint32_t RecordThread::getInputFramesLost() const
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
uint32_t result;
if (initCheck() == NO_ERROR && mInput->stream->getInputFramesLost(&result) == OK) {
return result;
@@ -9604,7 +9609,7 @@
KeyedVector<audio_session_t, bool> RecordThread::sessionIds() const
{
KeyedVector<audio_session_t, bool> ids;
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
for (size_t j = 0; j < mTracks.size(); ++j) {
sp<IAfRecordTrack> track = mTracks[j];
audio_session_t sessionId = track->sessionId();
@@ -9617,7 +9622,7 @@
AudioStreamIn* RecordThread::clearInput()
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
AudioStreamIn *input = mInput;
mInput = NULL;
mInputSource.clear();
@@ -9742,7 +9747,7 @@
void RecordThread::updateOutDevices(const DeviceDescriptorBaseVector& outDevices)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
mOutDevices = outDevices;
mOutDeviceTypeAddrs = deviceTypeAddrsFromDescriptors(mOutDevices);
for (size_t i = 0; i < mEffectChains.size(); i++) {
@@ -9879,7 +9884,7 @@
void RecordThread::addPatchTrack(const sp<IAfPatchRecord>& record)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
mTracks.add(record);
if (record->getSource()) {
mSource = record->getSource();
@@ -9888,7 +9893,7 @@
void RecordThread::deletePatchTrack(const sp<IAfPatchRecord>& record)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
if (mSource == record->getSource()) {
mSource = mInput;
}
@@ -10013,7 +10018,7 @@
{
ActiveTracks<IAfMmapTrack> activeTracks;
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
for (const sp<IAfMmapTrack>& t : mActiveTracks) {
activeTracks.add(t);
}
@@ -10157,13 +10162,13 @@
{
// Add the track record before starting input so that the silent status for the
// client can be cached.
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
setClientSilencedState_l(portId, false /*silenced*/);
}
ret = AudioSystem::startInput(portId);
}
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
// abort if start is rejected by audio policy manager
if (ret != NO_ERROR) {
ALOGE("%s: error start rejected by AudioPolicyManager = %d", __FUNCTION__, ret);
@@ -10239,7 +10244,7 @@
return NO_ERROR;
}
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
sp<IAfMmapTrack> track;
for (const sp<IAfMmapTrack>& t : mActiveTracks) {
@@ -10432,7 +10437,7 @@
String8 MmapThread::getParameters(const String8& keys)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
String8 out_s8;
if (initCheck() == NO_ERROR && mHalStream->getParameters(keys, &out_s8) == OK) {
return out_s8;
@@ -10790,7 +10795,7 @@
AudioStreamOut* MmapPlaybackThread::clearOutput()
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
AudioStreamOut *output = mOutput;
mOutput = NULL;
return output;
@@ -10798,7 +10803,7 @@
void MmapPlaybackThread::setMasterVolume(float value)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
// Don't apply master volume in SW if our HAL can do it for us.
if (mAudioHwDev &&
mAudioHwDev->canSetMasterVolume()) {
@@ -10810,7 +10815,7 @@
void MmapPlaybackThread::setMasterMute(bool muted)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
// Don't apply master mute in SW if our HAL can do it for us.
if (mAudioHwDev && mAudioHwDev->canSetMasterMute()) {
mMasterMute = false;
@@ -10821,7 +10826,7 @@
void MmapPlaybackThread::setStreamVolume(audio_stream_type_t stream, float value)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
if (stream == mStreamType) {
mStreamVolume = value;
broadcast_l();
@@ -10830,7 +10835,7 @@
float MmapPlaybackThread::streamVolume(audio_stream_type_t stream) const
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
if (stream == mStreamType) {
return mStreamVolume;
}
@@ -10839,7 +10844,7 @@
void MmapPlaybackThread::setStreamMute(audio_stream_type_t stream, bool muted)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
if (stream == mStreamType) {
mStreamMute= muted;
broadcast_l();
@@ -10848,7 +10853,7 @@
void MmapPlaybackThread::invalidateTracks(audio_stream_type_t streamType)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
if (streamType == mStreamType) {
for (const sp<IAfMmapTrack>& track : mActiveTracks) {
track->invalidate();
@@ -10859,7 +10864,7 @@
void MmapPlaybackThread::invalidateTracks(std::set<audio_port_handle_t>& portIds)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
bool trackMatch = false;
for (const sp<IAfMmapTrack>& track : mActiveTracks) {
if (portIds.find(track->portId()) != portIds.end()) {
@@ -11070,7 +11075,7 @@
AudioStreamIn* MmapCaptureThread::clearInput()
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
AudioStreamIn *input = mInput;
mInput = NULL;
return input;
@@ -11128,7 +11133,7 @@
void MmapCaptureThread::setRecordSilenced(audio_port_handle_t portId, bool silenced)
{
- audio_utils::lock_guard _l(mutex());
+ audio_utils::lock_guard _l(mutex());
for (size_t i = 0; i < mActiveTracks.size() ; i++) {
if (mActiveTracks[i]->portId() == portId) {
mActiveTracks[i]->setSilenced_l(silenced);