diff options
author | Florian Jung <flo@thinkpad.(none)> | 2011-01-09 18:08:06 +0100 |
---|---|---|
committer | Florian Jung <flo@thinkpad.(none)> | 2011-01-09 18:12:18 +0100 |
commit | e68c45396bce7523f706df0b02a78cb08ac8d1cc (patch) | |
tree | 857c20c1f4dcdf7c5e743455c59a44c52c84d65a /synth | |
parent | bf75646b14cf1e8f3eed9f8b15158efefb837cb4 (diff) |
Loaded note-shared-objects are now unloadedcompiled_notes
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 |