- load FluidSynth dynamic library once

https://forum.zdoom.org/viewtopic.php?t=70710
This commit is contained in:
alexey.lysiuk 2021-05-19 09:12:59 +03:00
parent 2cae98b442
commit 69692696ec

View file

@ -116,7 +116,6 @@ protected:
static TReqProc<FluidSynthModule, int (*)(fluid_synth_t *, const char *, int, char *, int *, int *, int)> fluid_synth_sysex;
bool LoadFluidSynth(const char *fluid_lib);
void UnloadFluidSynth();
#endif
};
@ -251,9 +250,6 @@ FluidSynthMIDIDevice::~FluidSynthMIDIDevice()
{
delete_fluid_settings(FluidSettings);
}
#ifdef DYN_FLUIDSYNTH
UnloadFluidSynth();
#endif
}
//==========================================================================
@ -536,35 +532,29 @@ DYN_FLUID_SYM(fluid_synth_sysex);
bool FluidSynthMIDIDevice::LoadFluidSynth(const char *fluid_lib)
{
if (fluid_lib && strlen(fluid_lib) > 0)
static bool is_loaded = false;
static bool is_checked = false;
if (!is_checked)
{
if(!FluidSynthModule.Load({fluid_lib}))
if (fluid_lib && strlen(fluid_lib) > 0)
{
const char* libname = fluid_lib;
ZMusic_Printf(ZMUSIC_MSG_ERROR, "Could not load %s\n", libname);
is_loaded = FluidSynthModule.Load({ fluid_lib });
if (!is_loaded)
ZMusic_Printf(ZMUSIC_MSG_ERROR, "Could not load %s\n", fluid_lib);
}
else
return true;
if (!is_loaded)
{
is_loaded = FluidSynthModule.Load({ FLUIDSYNTHLIB1, FLUIDSYNTHLIB2 });
if (!is_loaded)
ZMusic_Printf(ZMUSIC_MSG_ERROR, "Could not load " FLUIDSYNTHLIB1 " or " FLUIDSYNTHLIB2 "\n");
}
is_checked = true;
}
if(!FluidSynthModule.Load({FLUIDSYNTHLIB1, FLUIDSYNTHLIB2}))
{
ZMusic_Printf(ZMUSIC_MSG_ERROR, "Could not load " FLUIDSYNTHLIB1 " or " FLUIDSYNTHLIB2 "\n");
return false;
}
return true;
}
//==========================================================================
//
// FluidSynthMIDIDevice :: UnloadFluidSynth
//
//==========================================================================
void FluidSynthMIDIDevice::UnloadFluidSynth()
{
FluidSynthModule.Unload();
return is_loaded;
}
#endif