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;
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();
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];
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)