- static char *prev_status;
- char *tmp = audiod_status_string();
-
- if (!prev_status || strcmp(tmp, prev_status))
- stat_client_write(tmp);
- free(prev_status);
- prev_status = tmp;
+ static char *p_ts, *p_us, *p_as, *p_df;
+ struct timeval *t = wstime();
+ char *us, *tmp = get_time_string(t);
+
+ if (tmp && (!p_ts || strcmp(tmp, p_ts)))
+ stat_client_write(tmp, SI_PLAY_TIME);
+ free(p_ts);
+ p_ts = tmp;
+
+ us = uptime_str();
+ tmp = make_message("%s:%s\n", status_item_list[SI_AUDIOD_UPTIME], us);
+ free(us);
+ if (!p_us || strcmp(p_us, tmp))
+ stat_client_write(tmp, SI_AUDIOD_UPTIME);
+ free(p_us);
+ p_us = tmp;
+
+ tmp = audiod_status_string();
+ if (!p_as || strcmp(p_as, tmp))
+ stat_client_write(tmp, SI_AUDIOD_STATUS);
+ free(p_as);
+ p_as = tmp;
+
+ tmp = decoder_flags();
+ if (!p_df || strcmp(p_df, tmp))
+ stat_client_write(tmp, SI_DECODER_FLAGS);
+ free(p_df);
+ p_df = tmp;