X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;ds=sidebyside;f=mood.c;h=1e15ef0e081480381fcbc4fdad2179848f429c1f;hb=a14ec817617f0bdaefda48e98cac338406503aad;hp=804fb57667563461229d5b9e37aa8a16c6320b67;hpb=2d2637cb4c9ab76fea6bc336b9af88fd00bf5e08;p=paraslash.git diff --git a/mood.c b/mood.c index 804fb576..1e15ef0e 100644 --- a/mood.c +++ b/mood.c @@ -134,6 +134,8 @@ static void destroy_mood(struct mood_instance *m) if (!m) return; mp_shutdown(m->parser_context); + if (m->score_table) + score_close(m->score_table); free(m->name); free(m); } @@ -531,18 +533,23 @@ static char *get_statistics(struct mood_instance *m, int64_t sse) unsigned n = m->stats.num; int mean_days, sigma_days; + if (n == 0) + return make_message("no admissible files\n"); mean_days = (sse - m->stats.last_played_sum / n) / 3600 / 24; sigma_days = int_sqrt(m->stats.last_played_qd / n) / 3600 / 24; return make_message( "loaded mood %s (%u files)\n" "last_played mean/sigma: %d/%d days\n" "num_played mean/sigma: %" PRId64 "/%" PRIu64 "\n" + "correction factor ratio: %.2lf\n" , m->name? m->name : "(dummy)", n, mean_days, sigma_days, m->stats.num_played_sum / n, - int_sqrt(m->stats.num_played_qd / n) + int_sqrt(m->stats.num_played_qd / n), + 86400.0 * m->stats.last_played_correction / + m->stats.num_played_correction ); } @@ -638,12 +645,6 @@ int mood_load(const char *mood_name, struct mood_instance **result, char **msg) } clock_get_realtime(&rnow); compute_correction_factors(rnow.tv_sec, &aa.m->stats); - if (aa.m->stats.num == 0) { - if (msg) - *msg = make_message("no admissible files\n"); - ret = 0; - goto out; - } if (result) score_open(&aa.m->score_table); for (i = 0; i < aa.m->stats.num; i++) { @@ -665,9 +666,10 @@ int mood_load(const char *mood_name, struct mood_instance **result, char **msg) mood_unload(NULL); current_mood = aa.m; } + ret = 1; out: free(aa.array); - if (ret < 0) + if (ret <= 0) /* error, or no admissible files */ destroy_mood(aa.m); return ret; }