osd: treat user provided term-status-msg the same as the default

This is achieved by adding the new function get_term_status_msg that
returns the status message specified by the user, or the mpv default.

Previously, term_osd_print_status_lazy would exit early as soon as a
user status message had been set, which potentially skipped adding the
term_osd_bar if the user also requested that.

fixes #3280
This commit is contained in:
Kevin Mitchell 2018-01-13 23:20:17 -08:00
parent 48fa7da865
commit 845f32732f
1 changed files with 24 additions and 20 deletions

View File

@ -156,28 +156,12 @@ static bool is_busy(struct MPContext *mpctx)
return !mpctx->restart_complete && mp_time_sec() - mpctx->start_timestamp > 0.3; return !mpctx->restart_complete && mp_time_sec() - mpctx->start_timestamp > 0.3;
} }
static void term_osd_print_status_lazy(struct MPContext *mpctx) static char *get_term_status_msg(struct MPContext *mpctx)
{ {
struct MPOpts *opts = mpctx->opts; struct MPOpts *opts = mpctx->opts;
update_window_title(mpctx, false); if (opts->status_msg)
update_vo_playback_state(mpctx); return mp_property_expand_escaped_string(mpctx, opts->status_msg);
if (!opts->use_terminal)
return;
if (opts->quiet || !mpctx->playback_initialized || !mpctx->playing_msg_shown)
{
term_osd_set_status_lazy(mpctx, "");
return;
}
if (opts->status_msg) {
char *r = mp_property_expand_escaped_string(mpctx, opts->status_msg);
term_osd_set_status_lazy(mpctx, r);
talloc_free(r);
return;
}
char *line = NULL; char *line = NULL;
@ -272,6 +256,27 @@ static void term_osd_print_status_lazy(struct MPContext *mpctx)
} }
} }
return line;
}
static void term_osd_print_status_lazy(struct MPContext *mpctx)
{
struct MPOpts *opts = mpctx->opts;
update_window_title(mpctx, false);
update_vo_playback_state(mpctx);
if (!opts->use_terminal)
return;
if (opts->quiet || !mpctx->playback_initialized || !mpctx->playing_msg_shown)
{
term_osd_set_status_lazy(mpctx, "");
return;
}
char *line = get_term_status_msg(mpctx);
if (opts->term_osd_bar) { if (opts->term_osd_bar) {
saddf(&line, "\n"); saddf(&line, "\n");
int w = 80, h = 24; int w = 80, h = 24;
@ -279,7 +284,6 @@ static void term_osd_print_status_lazy(struct MPContext *mpctx)
add_term_osd_bar(mpctx, &line, w); add_term_osd_bar(mpctx, &line, w);
} }
// end
term_osd_set_status_lazy(mpctx, line); term_osd_set_status_lazy(mpctx, line);
talloc_free(line); talloc_free(line);
} }