fix dccp sender/receiver
[paraslash.git] / audiod.c
index 0c8ee28..8f6f356 100644 (file)
--- a/audiod.c
+++ b/audiod.c
@@ -499,8 +499,22 @@ static void kill_all_decoders(void)
 
        FOR_EACH_SLOT(i) {
                struct slot_info *s = &slot[i];
-               if (s->receiver_node)
+               if (s->wng && !s->wng->eof) {
+                       PARA_INFO_LOG("unregistering writer node group in slot %d\n",
+                               i);
+                       wng_unregister(s->wng);
+                       s->wng->eof = 1;
+               }
+               if (s->fc && !s->fc->eof) {
+                       PARA_INFO_LOG("unregistering filter chain in slot %d\n", i);
+                       unregister_task(&s->fc->task);
+                       s->fc->eof = 1;
+               }
+               if (s->receiver_node && !s->receiver_node->eof) {
+                       PARA_INFO_LOG("unregistering receiver_node in slot %d\n", i);
+                       unregister_task(&s->receiver_node->task);
                        s->receiver_node->eof = 1;
+               }
        }
 }
 
@@ -670,10 +684,6 @@ static void wng_event_handler(struct task *t)
                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));
        }
 }