[apple] Replace list<T> with unordered_set<T>
This code modifications replace the member variable container list<T>
with unordered_set<T> for the stream.
Bug: 1413450
Change-Id: Ic5a4fe8d5d27f6f4a0850f3b82928120d998fb6a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5225920
Commit-Queue: Abhijeet Kandalkar <abhijeet@igalia.com>
Reviewed-by: Thomas Guilbert <tguilbert@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1250852}
diff --git a/media/audio/mac/audio_manager_mac.cc b/media/audio/mac/audio_manager_mac.cc
index e229c57..3ac05f3 100644
--- a/media/audio/mac/audio_manager_mac.cc
+++ b/media/audio/mac/audio_manager_mac.cc
@@ -818,7 +818,7 @@
}
AUHALStream* stream = new AUHALStream(this, params, device, log_callback);
- output_streams_.push_back(stream);
+ output_streams_.insert(stream);
return stream;
}
@@ -863,7 +863,7 @@
DCHECK(GetTaskRunner()->BelongsToCurrentThread());
DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format());
AudioInputStream* stream = new PCMQueueInAudioInputStream(this, params);
- basic_input_streams_.push_back(stream);
+ basic_input_streams_.insert(stream);
return stream;
}
@@ -897,7 +897,7 @@
auto* stream = new AUAudioInputStream(this, params, audio_device_id,
log_callback, voice_processing_mode);
- low_latency_input_streams_.push_back(stream);
+ low_latency_input_streams_.insert(stream);
return stream;
}
@@ -1237,17 +1237,25 @@
void AudioManagerMac::ReleaseOutputStream(AudioOutputStream* stream) {
DCHECK(GetTaskRunner()->BelongsToCurrentThread());
- output_streams_.remove(static_cast<AUHALStream*>(stream));
+ const int streams_erased =
+ output_streams_.erase(static_cast<AUHALStream*>(stream));
+ CHECK_EQ(streams_erased, 1);
+
AudioManagerBase::ReleaseOutputStream(stream);
}
void AudioManagerMac::ReleaseInputStream(AudioInputStream* stream) {
DCHECK(GetTaskRunner()->BelongsToCurrentThread());
- auto stream_it = base::ranges::find(basic_input_streams_, stream);
- if (stream_it == basic_input_streams_.end()) {
- low_latency_input_streams_.remove(static_cast<AUAudioInputStream*>(stream));
- } else {
+ auto stream_it = basic_input_streams_.find(stream);
+ if (stream_it != basic_input_streams_.end()) {
basic_input_streams_.erase(stream_it);
+ } else {
+ auto it = low_latency_input_streams_.find(
+ static_cast<AUAudioInputStream*>(stream));
+ if (it != low_latency_input_streams_.end()) {
+ low_latency_input_streams_.erase(
+ static_cast<AUAudioInputStream*>(stream));
+ }
}
AudioManagerBase::ReleaseInputStream(stream);
diff --git a/media/audio/mac/audio_manager_mac.h b/media/audio/mac/audio_manager_mac.h
index 7cf55f50..a7ddf6b 100644
--- a/media/audio/mac/audio_manager_mac.h
+++ b/media/audio/mac/audio_manager_mac.h
@@ -253,9 +253,9 @@
// We no longer close the streams, so we may be able to get rid of these
// member variables. They are currently used by MaybeChangeBufferSize().
// Investigate if we can remove these.
- std::list<AudioInputStream*> basic_input_streams_;
- std::list<AUAudioInputStream*> low_latency_input_streams_;
- std::list<AUHALStream*> output_streams_;
+ std::unordered_set<AudioInputStream*> basic_input_streams_;
+ std::unordered_set<AUAudioInputStream*> low_latency_input_streams_;
+ std::unordered_set<AUHALStream*> output_streams_;
// Used to swizzle SCStreamManager when performing loopback capture.
std::unique_ptr<base::apple::ScopedObjCClassSwizzler>