From ac073e22c9b5662a858f81a2a28a8f71b2cc71b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Fri, 7 Apr 2017 17:00:34 +0200 Subject: [PATCH] Fix crash caused by multiple identical audio device names The option dropdown for audio device selection lists all audio device names. Dropdowns, however, may not have multiple identical keys. This commit adds removal of duplicate audio device names from the dropdown. BASS does not give us a simple mechanism to select specific audio devices in such a case anyways. This functionality would require OS-specific and involved code. --- .../Options/Sections/Audio/AudioDevicesOptions.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/osu.Game/Overlays/Options/Sections/Audio/AudioDevicesOptions.cs b/osu.Game/Overlays/Options/Sections/Audio/AudioDevicesOptions.cs index 2818f5fbd7..df9be143c3 100644 --- a/osu.Game/Overlays/Options/Sections/Audio/AudioDevicesOptions.cs +++ b/osu.Game/Overlays/Options/Sections/Audio/AudioDevicesOptions.cs @@ -39,7 +39,13 @@ namespace osu.Game.Overlays.Options.Sections.Audio if (deviceItems.All(kv => kv.Value != preferredDeviceName)) deviceItems.Add(new KeyValuePair(preferredDeviceName, preferredDeviceName)); - dropdown.Items = deviceItems; + // The option dropdown for audio device selection lists all audio + // device names. Dropdowns, however, may not have multiple identical + // keys. Thus, we remove duplicate audio device names from + // the dropdown. BASS does not give us a simple mechanism to select + // specific audio devices in such a case anyways.This functionality would + // require OS-specific and involved code. + dropdown.Items = deviceItems.Distinct().ToList(); } private void onDeviceChanged(string name) => updateItems();