From 51e014c8588df2358d633ca4b0fa048c4c409539 Mon Sep 17 00:00:00 2001 From: Professor Hastig Date: Thu, 28 Dec 2023 11:45:08 +0100 Subject: [PATCH] do MIDI device lookup by lump index as well, for the same reasons as doing it for the volume. --- src/common/audio/music/music.cpp | 3 ++- src/common/audio/music/s_music.h | 2 +- src/sound/s_advsound.cpp | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/common/audio/music/music.cpp b/src/common/audio/music/music.cpp index e05f9a0437..769d5c07c2 100644 --- a/src/common/audio/music/music.cpp +++ b/src/common/audio/music/music.cpp @@ -716,7 +716,6 @@ bool S_ChangeMusic(const char* musicname, int order, bool looping, bool force) } ZMusic_MusicStream handle = nullptr; - MidiDeviceSetting* devp = MidiDevices.CheckKey(musicname); // Strip off any leading file:// component. if (strncmp(musicname, "file://", 7) == 0) @@ -751,6 +750,8 @@ bool S_ChangeMusic(const char* musicname, int order, bool looping, bool force) else { int lumpnum = mus_cb.FindMusic(musicname); + MidiDeviceSetting* devp = MidiDevices.CheckKey(lumpnum); + auto volp = MusicVolumes.CheckKey(lumpnum); if (volp) { diff --git a/src/common/audio/music/s_music.h b/src/common/audio/music/s_music.h index 37a7c2de73..cddfd36d62 100644 --- a/src/common/audio/music/s_music.h +++ b/src/common/audio/music/s_music.h @@ -68,7 +68,7 @@ struct MidiDeviceSetting FString args; }; -typedef TMap MidiDeviceMap; +typedef TMap MidiDeviceMap; typedef TMap MusicVolumeMap; extern MidiDeviceMap MidiDevices; diff --git a/src/sound/s_advsound.cpp b/src/sound/s_advsound.cpp index 3e3aed6242..f48e6855e4 100644 --- a/src/sound/s_advsound.cpp +++ b/src/sound/s_advsound.cpp @@ -1077,7 +1077,7 @@ static void S_AddSNDINFO (int lump) case SI_MidiDevice: { sc.MustGetString(); - FName nm = sc.String; + int lumpnum = mus_cb.FindMusic(sc.String); FScanner::SavedPos save = sc.SavePos(); sc.SetCMode(true); @@ -1109,7 +1109,7 @@ static void S_AddSNDINFO (int lump) sc.RestorePos(save); sc.MustGetString(); } - MidiDevices[nm] = devset; + if (lumpnum >= 0) MidiDevices[lumpnum] = devset; } break;