X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=mood.c;h=acc5583ffffc00bbaa743d07e30a7b1d458cb451;hp=83c3a574a53c5658afe43a296ae2de9f2c368873;hb=3f696a82bbb79cb07bfdb8e510bb4f3515570cec;hpb=de9ce9690ac6194e8e7eaacd10baf21d827e42a4 diff --git a/mood.c b/mood.c index 83c3a574..acc5583f 100644 --- a/mood.c +++ b/mood.c @@ -8,6 +8,7 @@ #include #include +#include #include "para.h" #include "error.h" @@ -19,6 +20,7 @@ #include "mm.h" #include "sideband.h" #include "mood.h" +#include "sched.h" /** * Contains statistical data of the currently admissible audio files. @@ -746,23 +748,34 @@ static int mood_update_audio_file(const struct osl_row *aft_row, percent = 100; else if (percent < 0) percent = 0; - PARA_DEBUG_LOG("moving from rank %u to %lu%%\n", rank, percent); + PARA_DEBUG_LOG("moving from rank %u to %li%%\n", rank, percent); return score_update(aft_row, percent); } static void log_statistics(void) { unsigned n = statistics.num; + int mean_days, sigma_days; + /* + * We can not use the "now" pointer from sched.c here because we are + * called before schedule(), which initializes "now". + */ + struct timeval rnow; + assert(current_mood); + PARA_NOTICE_LOG("loaded mood %s\n", current_mood->name? + current_mood->name : "(dummy)"); if (!n) { - PARA_NOTICE_LOG("no admissible files\n"); + PARA_WARNING_LOG("no admissible files\n"); return; } - PARA_INFO_LOG("last_played mean: %lli, last_played sigma: %llu\n", - (long long int)(statistics.last_played_sum / n), - (long long unsigned)int_sqrt(statistics.last_played_qd / n)); - PARA_INFO_LOG("num_played mean: %lli, num_played sigma: %llu\n", - (long long int)statistics.num_played_sum / n, + PARA_NOTICE_LOG("%u admissible files\n", statistics.num); + clock_get_realtime(&rnow); + mean_days = (rnow.tv_sec - statistics.last_played_sum / n) / 3600 / 24; + sigma_days = int_sqrt(statistics.last_played_qd / n) / 3600 / 24; + PARA_NOTICE_LOG("last_played mean/sigma: %d/%d days\n", mean_days, sigma_days); + PARA_NOTICE_LOG("num_played mean/sigma: %llu/%llu\n", + (long long unsigned)statistics.num_played_sum / n, (long long unsigned)int_sqrt(statistics.num_played_qd / n)); } @@ -829,15 +842,13 @@ int change_current_mood(const char *mood_name) ret = audio_file_loop(&aa, add_if_admissible); if (ret < 0) return ret; - log_statistics(); - PARA_INFO_LOG("%d admissible files\n", statistics.num); for (i = 0; i < statistics.num; i++) { struct admissible_file_info *a = aa.array + i; ret = add_to_score_table(a->aft_row, a->score); if (ret < 0) goto out; } - PARA_NOTICE_LOG("loaded mood %s\n", mood_name? mood_name : "(dummy)"); + log_statistics(); ret = statistics.num; out: free(aa.array);