aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIOhannes m zmölnig <zmoelnig@users.sourceforge.net>2010-04-01 12:21:11 +0000
committerIOhannes m zmölnig <zmoelnig@users.sourceforge.net>2010-04-01 12:21:11 +0000
commit491c98d28242180cc21df16cc13f5de76d45b401 (patch)
tree0eb2a580a123997596128399fab05f9ce7101e19
parentbdfbd8a34c5873f567181f92a2f09c69492e9ac3 (diff)
cleanup queue in destructor
svn path=/trunk/externals/iem/iemnet/; revision=13346
-rw-r--r--iemnet_receiver.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/iemnet_receiver.c b/iemnet_receiver.c
index d161354..d6f5bdf 100644
--- a/iemnet_receiver.c
+++ b/iemnet_receiver.c
@@ -113,10 +113,12 @@ static void iemnet__receiver_tick(t_iemnet_receiver *x)
iemnet__chunk_destroy(c);
c=queue_pop_noblock(x->queue);
}
+ DEBUG("tick cleanup");
pthread_mutex_lock(&x->newdatamtx);
x->newdataflag=0;
pthread_mutex_unlock(&x->newdatamtx);
-
+
+ DEBUG("tick running %d", x->running);
if(!x->running) {
// read terminated
@@ -124,6 +126,7 @@ static void iemnet__receiver_tick(t_iemnet_receiver *x)
if(x->keepreceiving)
x->callback(x->userdata, NULL, 0, NULL);
}
+ DEBUG("tick DONE");
}
int iemnet__receiver_getsize(t_iemnet_receiver*x) {
@@ -196,6 +199,7 @@ void iemnet__receiver_destroy(t_iemnet_receiver*rec) {
// empty the queue
DEBUG("[%d] tick %d", inst, rec->running);
iemnet__receiver_tick(rec);
+ queue_destroy(rec->queue);
DEBUG("[%d] tack", inst);
if(rec->data)iemnet__chunk_destroy(rec->data);
@@ -210,6 +214,7 @@ void iemnet__receiver_destroy(t_iemnet_receiver*rec) {
rec->data=NULL;
rec->callback=NULL;
rec->flist=NULL;
+ rec->queue=NULL;
freebytes(rec, sizeof(t_iemnet_receiver));
rec=NULL;