From: Steinar H. Gunderson Date: Sun, 7 Aug 2016 18:28:04 +0000 (+0200) Subject: Small cleanup in AudioMixer::set_input_mapping(). X-Git-Tag: 1.4.0~109 X-Git-Url: https://git.sesse.net/?p=nageru;a=commitdiff_plain;h=ee04fe8f673413b3a904e8232179a4010dd26b42 Small cleanup in AudioMixer::set_input_mapping(). --- diff --git a/audio_mixer.cpp b/audio_mixer.cpp index 88ca8c6..db4b24d 100644 --- a/audio_mixer.cpp +++ b/audio_mixer.cpp @@ -419,13 +419,12 @@ void AudioMixer::set_input_mapping(const InputMapping &new_input_mapping) { lock_guard lock(audio_mutex); - // FIXME: This needs to be keyed on DeviceSpec. - map> interesting_channels; + map> interesting_channels; for (const InputMapping::Bus &bus : new_input_mapping.buses) { if (bus.device.type == InputSourceType::CAPTURE_CARD) { for (unsigned channel = 0; channel < 2; ++channel) { if (bus.source_channel[channel] != -1) { - interesting_channels[bus.device.index].insert(bus.source_channel[channel]); + interesting_channels[bus.device].insert(bus.source_channel[channel]); } } } @@ -433,9 +432,10 @@ void AudioMixer::set_input_mapping(const InputMapping &new_input_mapping) // Reset resamplers for all cards that don't have the exact same state as before. for (unsigned card_index = 0; card_index < num_cards; ++card_index) { + DeviceSpec device_spec{InputSourceType::CAPTURE_CARD, card_index}; AudioDevice *device = &cards[card_index]; - if (device->interesting_channels != interesting_channels[card_index]) { - device->interesting_channels = interesting_channels[card_index]; + if (device->interesting_channels != interesting_channels[device_spec]) { + device->interesting_channels = interesting_channels[device_spec]; reset_device_mutex_held(DeviceSpec{InputSourceType::CAPTURE_CARD, card_index}); } } diff --git a/audio_mixer.h b/audio_mixer.h index 93c9beb..5ea79de 100644 --- a/audio_mixer.h +++ b/audio_mixer.h @@ -35,6 +35,12 @@ enum class InputSourceType { SILENCE, CAPTURE_CARD }; struct DeviceSpec { InputSourceType type; unsigned index; + + bool operator< (const DeviceSpec &other) const { + if (type != other.type) + return type < other.type; + return index < other.index; + } }; struct InputMapping {