src/media/audio/audio_core/audio_object.cc
void AudioObject::ForEachSourceLink(const LinkFunction& source_task) {
  TRACE_DURATION("audio", "AudioObject::ForEachSourceLink");
  std::lock_guard<std::mutex> links_lock(links_lock_);

  // Callers (generally AudioCapturers) should never be linked to destinations.
  FX_DCHECK(dest_links_.is_empty());

  for (auto& link : source_links_) {
    source_task(link);
  }
}
// Call the provided function for each source link (passing the link as param). This distributes
// calls such as SetGain to every AudioCapturer path.
Call the provided function for each source link (passing the link as param). This distributes
calls such as SetGain to every AudioCapturer path.
Call the provided function for each source link ( passing the link as param ) . This distributes calls such as SetGain to every AudioCapturer path .
void AudioObject::ForEachSourceLink(const LinkFunction& source_task) {
  TRACE_DURATION("audio", "AudioObject::ForEachSourceLink");
  std::lock_guard<std::mutex> links_lock(links_lock_);
  FX_DCHECK(dest_links_.is_empty());
  for (auto& link : source_links_) {
    source_task(link);
  }
}
void AudioObject :: ForEachSourceLink ( const LinkFunction & source_task ) { TRACE_DURATION ( " " , " " ) ; std :: lock_guard < std :: mutex > links_lock ( links_lock_ ) ; FX_DCHECK ( dest_links_ . is_empty ( ) ) ; for ( auto & link : source_links_ ) { source_task ( link ) ; } }
Call the provided function for each source link (passing the link as param).
Call the provided function for each source link ( passing the link as param ) .
// Callers (generally AudioCapturers) should never be linked to destinations.