X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=audiod.c;h=0c8ee2875873ef5c86b392448d0c80e6ec6e4540;hp=56014cad0e832931613abc6ac879dcde5c67c9b7;hb=f23be61d476e3f354e31072da0e0e77050a8dc56;hpb=eedc9eafd60b670dd2b90fcbcc380f3f9a333f93 diff --git a/audiod.c b/audiod.c index 56014cad..0c8ee287 100644 --- a/audiod.c +++ b/audiod.c @@ -610,12 +610,13 @@ static void open_filters(int slot_num) s->fc->inbuf = s->receiver_node->buf; s->fc->in_loaded = &s->receiver_node->loaded; s->fc->input_eof = &s->receiver_node->eof; - s->fc->task.pre_select = filter_pre_select; s->fc->task.event_handler = filter_event_handler; s->fc->task.private_data = s->fc; s->fc->task.flags = 0; s->fc->eof = 0; + + s->receiver_node->output_eof = &s->fc->eof; sprintf(s->fc->task.status, "filter chain"); for (i = 0; i < nf; i++) { struct filter_node *fn = para_calloc(sizeof(struct filter_node)); @@ -661,8 +662,20 @@ static struct filter_node *find_filter_node(int slot_num, int format, int filter static void wng_event_handler(struct task *t) { - PARA_INFO_LOG("%s\n", PARA_STRERROR(-t->ret)); - unregister_task(t); + struct writer_node_group *wng = t->private_data; + int i; + + wng_unregister(wng); + FOR_EACH_SLOT(i) { + struct slot_info *s = &slot[i]; + if (s->wng != wng) + continue; +// if (s->fc) +// s->fc->eof = 1; +// if (s->receiver_node) +// s->receiver_node->eof = 1; + PARA_INFO_LOG("slot %d: %s\n", i, PARA_STRERROR(-t->ret)); + } } static void open_writers(int slot_num) @@ -884,7 +897,6 @@ static void try_to_close_slot(int slot_num) return; PARA_INFO_LOG("closing slot %d \n", slot_num); wng_close(s->wng); - wng_destroy(s->wng); close_filters(s->fc); free(s->fc); close_receiver(slot_num);