audiod: Force status dump every 5 seconds.
[paraslash.git] / audiod.c
index dcf2c14..9ed319f 100644 (file)
--- a/audiod.c
+++ b/audiod.c
@@ -1031,18 +1031,21 @@ static int command_post_select(struct sched *s, struct task *t)
        int ret;
        struct command_task *ct = container_of(t, struct command_task, task);
        static struct timeval last_status_dump;
-       struct timeval tmp, delay = {0, 500 * 1000};
+       struct timeval tmp, delay = {5, 0};
+       bool force = false;
 
        tv_add(&last_status_dump, &delay, &tmp);
        if (tv_diff(&tmp, now, NULL) < 0) {
-               audiod_status_dump();
                last_status_dump = *now;
+               force = true;
        }
 
        ret = handle_connect(ct->fd, &s->rfds);
        if (ret < 0)
                PARA_ERROR_LOG("%s\n", para_strerror(-ret));
-       audiod_status_dump();
+       else if (ret > 0)
+               force = true;
+       audiod_status_dump(force);
        return 0;
 }
 
@@ -1066,7 +1069,7 @@ static void close_stat_pipe(void)
        stat_task->offset_seconds = 0;
        stat_task->vss_status = 0;
        stat_task->current_audio_format_num = -1;
-       audiod_status_dump();
+       audiod_status_dump(true);
 }
 
 /* avoid busy loop if server is down */