register_task(&rn->task);
}
-static int is_frozen(int format)
+static int is_frozen(int format, struct timeval *now)
{
- struct timeval now;
struct audio_format_info *a = &afi[format];
- gettimeofday(&now, NULL);
- return (tv_diff(&now, &a->restart_barrier, NULL) > 0)? 0 : 1;
+ return (tv_diff(now, &a->restart_barrier, NULL) > 0)? 0 : 1;
}
-static void start_current_receiver(void)
+static void start_current_receiver(struct timeval *now)
{
int i;
i = get_audio_format_num(af_status);
if (i < 0)
return;
- if ((decoder_running(i) & 1) || is_frozen(i))
+ if ((decoder_running(i) & 1) || is_frozen(i, now))
return;
open_receiver(i);
}
clear_slot(slot_num);
}
-static void audiod_pre_select(__a_unused struct sched *s, __a_unused struct task *t)
+static void audiod_pre_select(struct sched *s, __a_unused struct task *t)
{
int i;
if (audiod_status != AUDIOD_ON)
kill_all_decoders();
else if (playing)
- start_current_receiver();
+ start_current_receiver(&s->now);
check_timeouts();
FOR_EACH_SLOT(i) {
struct receiver_node *rn;