diff options
author | Tim E. Real <termtech@rogers.com> | 2011-10-03 01:56:34 +0000 |
---|---|---|
committer | Tim E. Real <termtech@rogers.com> | 2011-10-03 01:56:34 +0000 |
commit | f3313cc78e637ec9bc11efce5eb943434da93416 (patch) | |
tree | 29ca2c60eb262e25831639d09c33b80ff0df511c /muse2/synti/fluidsynth | |
parent | 9200bb81f55b0d33e0a61af0112f1ca294375554 (diff) |
Fixed HUGE massive memory leaks in all things using CItemList,
and SndFile, dssi, fluidsynth and other huge leaks. Large song with
several dssi, vst, fluidsynths leaked 100's of MB, now only ~2MB.
Diffstat (limited to 'muse2/synti/fluidsynth')
-rw-r--r-- | muse2/synti/fluidsynth/fluidsynti.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/muse2/synti/fluidsynth/fluidsynti.cpp b/muse2/synti/fluidsynth/fluidsynti.cpp index a03c5da8..cc5c496a 100644 --- a/muse2/synti/fluidsynth/fluidsynti.cpp +++ b/muse2/synti/fluidsynth/fluidsynti.cpp @@ -115,6 +115,17 @@ FluidSynth::FluidSynth(int sr, pthread_mutex_t *_Globalsfloader_mutex) : Mess(2) FluidSynth::~FluidSynth() { + + for (std::list<FluidSoundFont>::iterator it =stack.begin(); it !=stack.end(); it++) + { + if(it->intid == FS_UNSPECIFIED_FONT || it->intid == FS_UNSPECIFIED_ID) + continue; + //Try to unload soundfont + int err = fluid_synth_sfunload(fluidsynth, it->intid, 0); + if(err == -1) + std::cerr << DEBUG_ARGS << "Error unloading soundfont!" << fluid_synth_error(fluidsynth) << std::endl; + } + int err = delete_fluid_synth (fluidsynth); if(gui) delete gui; |