diff --git a/src/sdl/mixer_sound.c b/src/sdl/mixer_sound.c index e0b8de869..63b1045d7 100644 --- a/src/sdl/mixer_sound.c +++ b/src/sdl/mixer_sound.c @@ -110,7 +110,13 @@ static void Midiplayer_Onchange(void) Mix_Timidity_addToPathList(cv_miditimiditypath.string); if (restart) + { + // HACK: Need to set cv_resetmusic to reload MIDI music + INT32 resetmusicval = cv_resetmusic.value; + cv_resetmusic.value = 1; S_Start(); + cv_resetmusic.value = resetmusicval; + } } static void MidiSoundfontPath_Onchange(void) @@ -123,9 +129,15 @@ static void MidiSoundfontPath_Onchange(void) // check if file exists; menu calls this method at every keystroke SDL_RWops *rw = SDL_RWFromFile(cv_midisoundfontpath.string, "r"); if (rw != NULL) { + INT32 resetmusicval = cv_resetmusic.value; + SDL_RWclose(rw); Mix_SetSoundFonts(cv_midisoundfontpath.string); + + // HACK: Need to set cv_resetmusic to reload MIDI music + cv_resetmusic.value = 1; S_Start(); + cv_resetmusic.value = resetmusicval; } } }