- modified DeleteCallbackChain interface

- fixed killNode message to be sent for every node killed
This commit is contained in:
zolliker
2008-06-13 11:18:14 +00:00
parent 0305826724
commit d75eee789b
3 changed files with 15 additions and 14 deletions

View File

@@ -64,10 +64,14 @@ pHdbMessage GetHdbKillNodeMessage(pHdbMessage toTest){
return NULL;
}
/*================== internal functions ===================================*/
void DeleteCallbackChain(pHdbCallback root){
void DeleteCallbackChain(pHdb node){
pHdbCallback current = NULL, thisEntry;
hdbMessage killNodeMsg;
current = root;
killNodeMsg.type = killNode;
InvokeCallbackChain(node, &killNodeMsg);
current = node->callBackChain;
while(current != NULL){
if(current->killFunc != NULL){
current->killFunc(current->userData);
@@ -95,7 +99,8 @@ void DeleteNodeData(pHdb node){
if(node == NULL){
return;
}
DeleteCallbackChain(node->callBackChain);
DeleteCallbackChain(node);
if(node->properties != NULL){
DeleteStringDict(node->properties);
}
@@ -595,15 +600,11 @@ void AddHipadabaChild(pHdb parent, pHdb child, void *callData){
/*--------------------------------------------------------------------------*/
void DeleteHipadabaNode(pHdb node, void *callData){
pHdb current = NULL, tmp = NULL;
hdbMessage killNodeMsg;
if(node == NULL){
return;
}
killNodeMsg.type = killNode;
InvokeCallbackChain(node, &killNodeMsg);
RemoveHdbNodeFromParent(node, callData);
DeleteNodeData(node);