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:
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;