- made the sound font loading a bit more error resistant.

- implemented a fallback both for sound font lookup and for MIDI device selection so that if some non-working combination is set up, the player will fall back to something that works.
This commit is contained in:
Christoph Oelckers 2018-02-26 16:34:58 +01:00
commit eb124f6160
10 changed files with 77 additions and 35 deletions

View file

@ -161,7 +161,7 @@ static Instrument *load_instrument(Renderer *song, const char *name, int percuss
int i, j;
bool noluck = false;
if (!name) return 0;
if (!name || gus_sfreader == nullptr) return nullptr;
/* Open patch file */
fp = gus_sfreader->LookupFile(name).first;

View file

@ -720,15 +720,21 @@ void FreeDLS(DLS_Data *data);
Renderer::Renderer(float sample_rate, const char *args)
{
int res = 0;
// Load explicitly stated sound font if so desired.
if (args != nullptr && *args != 0)
{
if (!stricmp(args, "DMXGUS")) LoadDMXGUS();
LoadConfig(args);
if (!stricmp(args, "DMXGUS")) res = LoadDMXGUS();
res = LoadConfig(args);
}
else if (tonebank[0] == nullptr)
{
LoadConfig();
res = LoadConfig();
}
if (res < 0)
{
I_Error("Failed to load any MIDI patches");
}
// These can be left empty here if an error occured during sound font initialization.