Skip to content

Commit

Permalink
Convert delaylineList and delayReceiverList to std list objects.
Browse files Browse the repository at this point in the history
  • Loading branch information
mhroth committed Jun 8, 2011
1 parent 55e8dbf commit b599733
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 25 deletions.
29 changes: 7 additions & 22 deletions src/PdContext.cpp
Expand Up @@ -168,10 +168,7 @@ PdContext::PdContext(int numInputChannels, int numOutputChannels, int blockSize,
globalDspOutputBuffers = (float *) calloc(blockSize * numOutputChannels, sizeof(float));

sendController = new MessageSendController(this);

delaylineList = new ZGLinkedList();
delayReceiverList = new ZGLinkedList();


// configure the context lock, which is recursive
pthread_mutexattr_t mta;
pthread_mutexattr_init(&mta);
Expand All @@ -190,9 +187,6 @@ PdContext::~PdContext() {
for (int i = 0; i < graphList.size(); i++) {
delete graphList[i];
}

delete delaylineList;
delete delayReceiverList;

pthread_mutex_destroy(&contextLock);
}
Expand Down Expand Up @@ -843,34 +837,25 @@ void PdContext::registerDelayline(DspDelayWrite *delayline) {
printErr("delwrite~ with duplicate name \"%s\" registered.", delayline->getName());
return;
}

delaylineList->add(delayline);
delaylineList.push_back(delayline);

// connect this delayline to all same-named delay receivers
DelayReceiver *delayReceiver = NULL;
delayReceiverList->resetIterator();
while ((delayReceiver = (DelayReceiver *) delayReceiverList->getNext()) != NULL) {
if (strcmp(delayReceiver->getName(), delayline->getName()) == 0) {
delayReceiver->setDelayline(delayline);
}
for (list<DelayReceiver *>::iterator it = delayReceiverList.begin(); it != delayReceiverList.end(); it++) {
if (!strcmp((*it)->getName(), delayline->getName())) (*it)->setDelayline(delayline);
}
}

void PdContext::registerDelayReceiver(DelayReceiver *delayReceiver) {
delayReceiverList->add(delayReceiver);
delayReceiverList.push_back(delayReceiver);

// connect the delay receiver to the named delayline
DspDelayWrite *delayline = getDelayline(delayReceiver->getName());
delayReceiver->setDelayline(delayline);
}

DspDelayWrite *PdContext::getDelayline(char *name) {
DspDelayWrite *delayline = NULL;
delaylineList->resetIterator();
while ((delayline = (DspDelayWrite *) delaylineList->getNext()) != NULL) {
if (strcmp(delayline->getName(), name) == 0) {
return delayline;
}
for (list<DspDelayWrite *>::iterator it = delaylineList.begin(); it != delaylineList.end(); it++) {
if (!strcmp((*it)->getName(), name)) return *it;
}
return NULL;
}
Expand Down
6 changes: 3 additions & 3 deletions src/PdContext.h
Expand Up @@ -218,11 +218,11 @@ class PdContext {
/** A global list of all [receive~] objects. */
list<DspReceive *> dspReceiveList;

/** A global list of all [delwite~] objects. */
ZGLinkedList *delaylineList;
/** A global list of all [delwrite~] objects. */
list<DspDelayWrite *> delaylineList;

/** A global list of all [delread~] and [vd~] objects. */
ZGLinkedList *delayReceiverList;
list<DelayReceiver *> delayReceiverList;

/** A global list of all [throw~] objects. */
list<DspThrow *> throwList;
Expand Down

0 comments on commit b599733

Please sign in to comment.