]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - audiod.c
audiod: Make the time display more smooth.
[paraslash.git] / audiod.c
index 32047a1f9aae8d8c69adefe82e12a82e7bfcf00f..cc4164fead07425382e539f90261dead037c6279 100644 (file)
--- a/audiod.c
+++ b/audiod.c
@@ -633,6 +633,8 @@ static bool must_start_decoder(void)
        int cafn = stat_task->current_audio_format_num;
        unsigned vs = stat_task->vss_status;
 
+       if (audiod_status != AUDIOD_ON)
+               return false;
        if (cafn < 0)
                return false;
        if (!stat_task->ct)
@@ -1026,6 +1028,7 @@ static void command_post_select(struct sched *s, struct task *t)
        ret = handle_connect(ct->fd);
        if (ret < 0)
                PARA_ERROR_LOG("%s\n", para_strerror(-ret));
+       audiod_status_dump();
 }
 
 static void init_command_task(struct command_task *ct)
@@ -1153,6 +1156,13 @@ static void status_pre_select(struct sched *s, struct task *t)
                sched_request_barrier_or_min_delay(&st->restart_barrier, s);
        if (cafn >= 0)
                sched_request_barrier(&afi[cafn].restart_barrier, s);
+       /*
+        * If para_server is playing we'd like to have a smooth time display
+        * even if we are running in standby mode. So we request a timeout that
+        * expires at the next full second.
+        */
+       if (stat_task->vss_status & VSS_STATUS_FLAG_PLAYING)
+               sched_request_timeout_ms(1000 - now->tv_usec / 1000, s);
        return;
 min_delay:
        sched_min_delay(s);