shithub: choc

Download patch

ref: 467fe8ec6d47977438ebe664d8752dd3748111de
parent: a5b01f3b6a0c3ec22d9b23b60923e9d2d73a54b5
author: Michael Day <contact@michaelcday.com>
date: Tue Jun 28 12:08:05 EDT 2022

Consider soundfonts set via the environment

--- a/src/i_sdlmusic.c
+++ b/src/i_sdlmusic.c
@@ -186,7 +186,6 @@
 static boolean I_SDL_InitMusic(void)
 {
     boolean fluidsynth_sf_is_set = false;
-    boolean fluidsynth_requested;
 
     // If SDL_mixer is not initialized, we have to initialize it
     // and have the responsibility to shut it down later on.
@@ -221,10 +220,7 @@
     // Mix_Init() in order for FluidSynth to be registered as a valid decoder
     // in the Mix_GetMusicDecoder() list.
 
-    fluidsynth_requested =
-        ((strlen(fluidsynth_sf_path) > 0) && (strlen(timidity_cfg_path) == 0));
-
-    if (fluidsynth_requested)
+    if ((strlen(fluidsynth_sf_path) > 0) && (strlen(timidity_cfg_path) == 0))
     {
         if (M_FileExists(fluidsynth_sf_path))
         {
@@ -234,7 +230,6 @@
         {
             fprintf(stderr,
                     "I_SDL_InitMusic: Can't find FluidSynth soundfont.\n");
-            fluidsynth_requested = false;
         }
     }
 
@@ -246,8 +241,9 @@
 
     RemoveTimidityConfig();
 
-    // Confirm that FluidSynth is actually available.
-    if (fluidsynth_requested)
+    // If a soundfont has been set (either here on in the environment),
+    // confirm that FluidSynth is actually available before trying to use it.
+    if ((Mix_GetSoundFonts() != NULL) && (strlen(timidity_cfg_path) == 0))
     {
         int total;