Skip to content

Commit

Permalink
Fixing a bad clear of the node cache
Browse files Browse the repository at this point in the history
  • Loading branch information
bltzr authored and bltzr committed Oct 10, 2013
1 parent 01de75b commit c99d663
Showing 1 changed file with 36 additions and 36 deletions.
72 changes: 36 additions & 36 deletions Modular/library/PeerObject/TTReceiver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -315,43 +315,43 @@ TTErr TTReceiver::unbindAddress()
// for each node of the selection
ttAttributeName = ToTTName(mAddress.getAttribute());

for (mNodesObserversCache.begin(); mNodesObserversCache.end(); mNodesObserversCache.next()){

// get a cache element
oldElement = mNodesObserversCache.current();

// get the node
aNode = TTNodePtr((TTPtr)oldElement[0]);

// get the observer
oldObserver = oldElement[1];

// stop attribute observation of the node
// if the attribute exist
o = aNode->getObject();
if (o) {

anAttribute = NULL;
err = o->findAttribute(ttAttributeName, &anAttribute);

if(!err){

err = anAttribute->unregisterObserverForNotifications(*oldObserver);

if(!err) {
delete (TTValuePtr)TTCallbackPtr(oldObserver)->getBaton();
TTObjectBaseRelease(&oldObserver);
}

// for Mirror object : disable listening
if (o->getName() == kTTSym_Mirror)
TTMirrorPtr(o)->enableListening(*anAttribute, NO);
}
}

// clear observer cache
mNodesObserversCache.clear();
for (mNodesObserversCache.begin(); mNodesObserversCache.end(); mNodesObserversCache.next()){

// get a cache element
oldElement = mNodesObserversCache.current();

// get the node
aNode = TTNodePtr((TTPtr)oldElement[0]);

// get the observer
oldObserver = oldElement[1];

// stop attribute observation of the node
// if the attribute exist
o = aNode->getObject();
if (o) {

anAttribute = NULL;
err = o->findAttribute(ttAttributeName, &anAttribute);

if(!err){

err = anAttribute->unregisterObserverForNotifications(*oldObserver);

if(!err) {
delete (TTValuePtr)TTCallbackPtr(oldObserver)->getBaton();
TTObjectBaseRelease(&oldObserver);
}

// for Mirror object : disable listening
if (o->getName() == kTTSym_Mirror)
TTMirrorPtr(o)->enableListening(*anAttribute, NO);
}
}
}

// clear observer cache
mNodesObserversCache.clear();

// clear object cache
mObjectCache.clear();
Expand Down

0 comments on commit c99d663

Please sign in to comment.