Loading services/audioflinger/Threads.cpp +7 −3 Original line number Diff line number Diff line Loading @@ -2362,7 +2362,7 @@ sp<AudioFlinger::PlaybackThread::Track> AudioFlinger::PlaybackThread::createTrac { Mutex::Autolock _atCbL(mAudioTrackCbLock); if (callback.get() != nullptr) { mAudioTrackCallbacks.emplace(callback); mAudioTrackCallbacks.emplace(track, callback); } } Loading Loading @@ -2590,6 +2590,10 @@ void AudioFlinger::PlaybackThread::removeTrack_l(const sp<Track>& track) mLocalLog.log("removeTrack_l (%p) %s", track.get(), result.string()); mTracks.remove(track); { Mutex::Autolock _atCbL(mAudioTrackCbLock); mAudioTrackCallbacks.erase(track); } if (track->isFastTrack()) { int index = track->mFastIndex; ALOG_ASSERT(0 < index && index < (int)FastMixerState::sMaxFastTracks); Loading Loading @@ -2685,8 +2689,8 @@ void AudioFlinger::PlaybackThread::onCodecFormatChanged( audio_utils::metadata::byteStringFromData(metadata); std::vector metadataVec(metaDataStr.begin(), metaDataStr.end()); Mutex::Autolock _l(mAudioTrackCbLock); for (const auto& callback : mAudioTrackCallbacks) { callback->onCodecFormatChanged(metadataVec); for (const auto& callbackPair : mAudioTrackCallbacks) { callbackPair.second->onCodecFormatChanged(metadataVec); } }).detach(); } Loading services/audioflinger/Threads.h +1 −1 Original line number Diff line number Diff line Loading @@ -1187,7 +1187,7 @@ private: Mutex mAudioTrackCbLock; // Record of IAudioTrackCallback std::set<sp<media::IAudioTrackCallback>> mAudioTrackCallbacks; std::map<sp<Track>, sp<media::IAudioTrackCallback>> mAudioTrackCallbacks; private: // The HAL output sink is treated as non-blocking, but current implementation is blocking Loading Loading
services/audioflinger/Threads.cpp +7 −3 Original line number Diff line number Diff line Loading @@ -2362,7 +2362,7 @@ sp<AudioFlinger::PlaybackThread::Track> AudioFlinger::PlaybackThread::createTrac { Mutex::Autolock _atCbL(mAudioTrackCbLock); if (callback.get() != nullptr) { mAudioTrackCallbacks.emplace(callback); mAudioTrackCallbacks.emplace(track, callback); } } Loading Loading @@ -2590,6 +2590,10 @@ void AudioFlinger::PlaybackThread::removeTrack_l(const sp<Track>& track) mLocalLog.log("removeTrack_l (%p) %s", track.get(), result.string()); mTracks.remove(track); { Mutex::Autolock _atCbL(mAudioTrackCbLock); mAudioTrackCallbacks.erase(track); } if (track->isFastTrack()) { int index = track->mFastIndex; ALOG_ASSERT(0 < index && index < (int)FastMixerState::sMaxFastTracks); Loading Loading @@ -2685,8 +2689,8 @@ void AudioFlinger::PlaybackThread::onCodecFormatChanged( audio_utils::metadata::byteStringFromData(metadata); std::vector metadataVec(metaDataStr.begin(), metaDataStr.end()); Mutex::Autolock _l(mAudioTrackCbLock); for (const auto& callback : mAudioTrackCallbacks) { callback->onCodecFormatChanged(metadataVec); for (const auto& callbackPair : mAudioTrackCallbacks) { callbackPair.second->onCodecFormatChanged(metadataVec); } }).detach(); } Loading
services/audioflinger/Threads.h +1 −1 Original line number Diff line number Diff line Loading @@ -1187,7 +1187,7 @@ private: Mutex mAudioTrackCbLock; // Record of IAudioTrackCallback std::set<sp<media::IAudioTrackCallback>> mAudioTrackCallbacks; std::map<sp<Track>, sp<media::IAudioTrackCallback>> mAudioTrackCallbacks; private: // The HAL output sink is treated as non-blocking, but current implementation is blocking Loading