zynaddsubfx

ZynAddSubFX open source synthesizer
Log | Files | Refs | Submodules | LICENSE

commit cf8389d298b33d65fa26ed586aed5aac05a0be4e
parent fc6b1b9780a53ce3ef1ea0c74ff04e873c54eb1b
Author: fundamental <mark.d.mccurry@gmail.com>
Date:   Thu, 13 May 2010 11:13:45 -0400

Memory: Cleanning up various infractions

* Fixing improper memory access as determined by valgrind

Diffstat:
Msrc/Misc/Part.cpp | 12++++++------
Msrc/Misc/Part.h | 2+-
Msrc/Nio/JackEngine.cpp | 1+
Msrc/Nio/Nio.cpp | 2--
Msrc/main.cpp | 30+++++++++++++++---------------
5 files changed, 23 insertions(+), 24 deletions(-)

diff --git a/src/Misc/Part.cpp b/src/Misc/Part.cpp @@ -155,13 +155,13 @@ void Part::defaultsinstrument() /* * Cleanup the part */ -void Part::cleanup() +void Part::cleanup(bool final) { for(int k = 0; k < POLIPHONY; k++) KillNotePos(k); for(int i = 0; i < SOUND_BUFFER_SIZE; i++) { - partoutl[i] = denormalkillbuf[i]; - partoutr[i] = denormalkillbuf[i]; + partoutl[i] = final ? 0.0 : denormalkillbuf[i]; + partoutr[i] = final ? 0.0 : denormalkillbuf[i]; tmpoutl[i] = 0.0; tmpoutr[i] = 0.0; } @@ -170,15 +170,15 @@ void Part::cleanup() partefx[nefx]->cleanup(); for(int n = 0; n < NUM_PART_EFX + 1; n++) { for(int i = 0; i < SOUND_BUFFER_SIZE; i++) { - partfxinputl[n][i] = denormalkillbuf[i]; - partfxinputr[n][i] = denormalkillbuf[i]; + partfxinputl[n][i] = final ? 0.0 : denormalkillbuf[i]; + partfxinputr[n][i] = final ? 0.0 : denormalkillbuf[i]; } } } Part::~Part() { - cleanup(); + cleanup(true); for(int n = 0; n < NUM_KIT_ITEMS; n++) { if(kit[n].adpars != NULL) delete (kit[n].adpars); diff --git a/src/Misc/Part.h b/src/Misc/Part.h @@ -85,7 +85,7 @@ class Part void getfromXML(XMLwrapper *xml); void getfromXMLinstrument(XMLwrapper *xml); - void cleanup(); + void cleanup(bool final = false); // ADnoteParameters *ADPartParameters; // SUBnoteParameters *SUBPartParameters; diff --git a/src/Nio/JackEngine.cpp b/src/Nio/JackEngine.cpp @@ -41,6 +41,7 @@ JackEngine::JackEngine() audio.ports[i] = NULL; audio.portBuffs[i] = NULL; } + midi.inport = NULL; } bool JackEngine::connectServer(string server) diff --git a/src/Nio/Nio.cpp b/src/Nio/Nio.cpp @@ -43,7 +43,6 @@ int Nio::setDefaultSource(string name) cerr << "There is no input for " << name << endl; return false; } - cout << name << " selected." << endl; return 0; } @@ -56,7 +55,6 @@ int Nio::setDefaultSink(string name) if(!eng.setOutDefault(name)) { cerr << "There is no output for " << name << endl; } - cout << name << " selected." << endl; return 0; } diff --git a/src/main.cpp b/src/main.cpp @@ -189,10 +189,6 @@ void initprogram() / SAMPLE_RATE << " ms" << endl; cerr << "ADsynth Oscil.Size = \t" << OSCIL_SIZE << " samples" << endl; - srand(time(NULL)); - denormalkillbuf = new REALTYPE [SOUND_BUFFER_SIZE]; - for(int i = 0; i < SOUND_BUFFER_SIZE; i++) - denormalkillbuf[i] = (RND - 0.5) * 1e-16; master = &Master::getInstance(); master->swaplr = swaplr; @@ -277,6 +273,11 @@ int main(int argc, char *argv[]) OSCIL_SIZE = config.cfg.OscilSize; swaplr = config.cfg.SwapStereo; + srand(time(NULL)); + //produce denormal buf + denormalkillbuf = new REALTYPE [SOUND_BUFFER_SIZE]; + for(int i = 0; i < SOUND_BUFFER_SIZE; i++) + denormalkillbuf[i] = (RND - 0.5) * 1e-16; /* Parse command-line options */ #if OS_LINUX || OS_CYGWIN @@ -299,7 +300,7 @@ int main(int argc, char *argv[]) opterr = 0; int option_index = 0, opt, exitwithhelp = 0; - string loadfile, loadinstrument, input, output; + string loadfile, loadinstrument; while(1) { /**\todo check this process for a small memory leak*/ @@ -373,10 +374,16 @@ int main(int argc, char *argv[]) dump.startnow(); break; case 'I': - GETOP(input); + if(optarguments) { + if(Nio::getInstance().setDefaultSource(optarguments)) + exit(1); + } break; case 'O': - GETOP(output); + if(optarguments) { + if(Nio::getInstance().setDefaultSink(optarguments)) + exit(1); + } break; case '?': cerr << "ERROR:Bad option or parameter.\n" << endl; @@ -449,15 +456,8 @@ int main(int argc, char *argv[]) } } - Nio &nio = Nio::getInstance(); - - if(nio.setDefaultSource(input)) - exit(1); - if(nio.setDefaultSink(output)) - exit(1); - //Run the Nio system - nio.start(); + Nio::getInstance().start(); #warning remove welcome message when system is out of beta cout << "\nThanks for using the Nio system :)" << endl;