X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=audiod.c;h=29ceda5355b13d76b822693df63669dcad2909d0;hb=e0c146b3e200d875dbcc78b3c5a306f090d7dcd5;hp=f08be183f5e9b64d6c1b8cee29e1567c9fc6fc90;hpb=d46fe38dcada4108ed49a0e621376df0f7913fe3;p=paraslash.git diff --git a/audiod.c b/audiod.c index f08be183..29ceda53 100644 --- a/audiod.c +++ b/audiod.c @@ -506,8 +506,8 @@ static void close_receiver(int slot_num) a = &afi[s->format]; PARA_NOTICE_LOG("closing %s receiver in slot %d (eof = %d)\n", audio_formats[s->format] , slot_num, s->receiver_node->eof); - if (!s->receiver_node->eof) - unregister_task(&s->receiver_node->task); +// if (!s->receiver_node->eof) +// unregister_task(&s->receiver_node->task); a->receiver->close(s->receiver_node); free(s->receiver_node); s->receiver_node = NULL; @@ -944,7 +944,7 @@ static void audiod_pre_select(struct sched *s, __a_unused struct task *t) t->ret = 1; now = &s->now; - if (audiod_status != AUDIOD_ON) + if (audiod_status != AUDIOD_ON || !playing) kill_all_decoders(); else if (playing) open_current_receiver(); @@ -952,7 +952,6 @@ static void audiod_pre_select(struct sched *s, __a_unused struct task *t) struct slot_info *s = &slot[i]; struct audio_format_info *a; - try_to_close_slot(i); if (s->format < 0) continue; a = &afi[s->format]; @@ -974,9 +973,13 @@ static void audiod_pre_select(struct sched *s, __a_unused struct task *t) static void audiod_post_select(struct sched *s, __a_unused struct task *t) { - /* only save away the current time for other users */ + int i; + + /* save away the current time for other users */ now = &s->now; t->ret = 1; + FOR_EACH_SLOT(i) + try_to_close_slot(i); } static void init_audiod_task(struct task *t)