fluid-fun: Don't dlclose libfluidsynth, ever
Some versions of the library do nasty things with thread local storage without cleaning up after themselves.
This commit is contained in:
parent
1c1d72b03e
commit
6145c59305
|
@ -61,13 +61,7 @@ fail:
|
|||
Debug() << "Failed to load " FLUID_LIB ". Midi playback is disabled.";
|
||||
|
||||
memset(&fluid, 0, sizeof(fluid));
|
||||
finiFluidFunctions();
|
||||
#endif
|
||||
}
|
||||
|
||||
void finiFluidFunctions()
|
||||
{
|
||||
#ifndef SHARED_FLUID
|
||||
SDL_UnloadObject(so);
|
||||
so = 0;
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -55,6 +55,5 @@ struct FluidFunctions
|
|||
extern FluidFunctions fluid;
|
||||
|
||||
void initFluidFunctions();
|
||||
void finiFluidFunctions();
|
||||
|
||||
#endif // FLUIDFUN_H
|
||||
|
|
|
@ -53,7 +53,9 @@ struct SharedMidiState
|
|||
|
||||
~SharedMidiState()
|
||||
{
|
||||
if (!HAVE_FLUID || !inited)
|
||||
/* We might have initialized, but if the consecutive libfluidsynth
|
||||
* load failed, no resources will have been allocated */
|
||||
if (!inited || !HAVE_FLUID)
|
||||
return;
|
||||
|
||||
fluid.delete_settings(flSettings);
|
||||
|
@ -63,8 +65,6 @@ struct SharedMidiState
|
|||
assert(!synths[i].inUse);
|
||||
fluid.delete_synth(synths[i].synth);
|
||||
}
|
||||
|
||||
finiFluidFunctions();
|
||||
}
|
||||
|
||||
void initIfNeeded(const Config &conf)
|
||||
|
|
Loading…
Reference in New Issue