X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=mood.c;h=79f47e5a3d20801832d5ad396bbd5b3b98aeed08;hp=daa8196ad1a05fc9a7aa3d0ad648fdcaddf56fb0;hb=94802b02fadd65ac1704fe9fcbcf0a2b023d2fa4;hpb=db748cc3c4d60e1ec7fefe2ad58142c2820ae07f diff --git a/mood.c b/mood.c index daa8196a..79f47e5a 100644 --- a/mood.c +++ b/mood.c @@ -19,6 +19,7 @@ #include "mm.h" #include "sideband.h" #include "mood.h" +#include "sched.h" /** * Contains statistical data of the currently admissible audio files. @@ -746,23 +747,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)); } @@ -795,7 +807,7 @@ void close_current_mood(void) * \sa struct admissible_file_info, struct admissible_array, struct * afs_info::last_played, mood_close(). */ -int change_current_mood(char *mood_name) +int change_current_mood(const char *mood_name) { int i, ret; struct admissible_array aa = { @@ -807,7 +819,7 @@ int change_current_mood(char *mood_name) struct mood *m; struct osl_row *row; struct osl_object obj = { - .data = mood_name, + .data = (char *)mood_name, .size = strlen(mood_name) + 1 }; ret = osl(osl_get_row(moods_table, BLOBCOL_NAME, &obj, &row)); @@ -829,15 +841,13 @@ int change_current_mood(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);