diff options
Diffstat (limited to 'synth')
-rw-r--r-- | synth/main.cpp | 3 | ||||
-rw-r--r-- | synth/note_loader.cpp | 10 | ||||
-rw-r--r-- | synth/note_loader.h | 2 |
3 files changed, 14 insertions, 1 deletions
diff --git a/synth/main.cpp b/synth/main.cpp index 646e371..25287eb 100644 --- a/synth/main.cpp +++ b/synth/main.cpp @@ -186,6 +186,9 @@ void cleanup() channel[i]=NULL; } + for (int i=0;i<128;i++) + maybe_unload_note(program_settings[i]); + delete [] program_settings; } diff --git a/synth/note_loader.cpp b/synth/note_loader.cpp index b7ccc99..28613b9 100644 --- a/synth/note_loader.cpp +++ b/synth/note_loader.cpp @@ -42,3 +42,13 @@ void load_note_from_so(string file, program_t &prog) throw err; } } + +void maybe_unload_note(program_t &prog) +{ + if (prog.dl_handle) + { + dlclose(prog.dl_handle); + prog.dl_handle=NULL; + prog.create_func=NULL; + } +} diff --git a/synth/note_loader.h b/synth/note_loader.h index a922f3c..6731da1 100644 --- a/synth/note_loader.h +++ b/synth/note_loader.h @@ -9,5 +9,5 @@ using namespace std; void load_note_from_so(string file, program_t &prog); //throws string - +void maybe_unload_note(program_t &prog); #endif |