diff --git a/common/msg.c b/common/msg.c index 875d933822..cf2bd5c242 100644 --- a/common/msg.c +++ b/common/msg.c @@ -537,7 +537,20 @@ void mp_msg_force_stderr(struct mpv_global *global, bool force_stderr) { struct mp_log_root *root = global->log->root; + pthread_mutex_lock(&mp_msg_lock); root->force_stderr = force_stderr; + pthread_mutex_unlock(&mp_msg_lock); +} + +bool mp_msg_has_log_file(struct mpv_global *global) +{ + struct mp_log_root *root = global->log->root; + + pthread_mutex_lock(&mp_msg_lock); + bool res = !!root->log_file; + pthread_mutex_unlock(&mp_msg_lock); + + return res; } void mp_msg_uninit(struct mpv_global *global) diff --git a/common/msg_control.h b/common/msg_control.h index 56091fdc2d..4b67190155 100644 --- a/common/msg_control.h +++ b/common/msg_control.h @@ -9,6 +9,7 @@ void mp_msg_uninit(struct mpv_global *global); void mp_msg_update_msglevels(struct mpv_global *global); void mp_msg_force_stderr(struct mpv_global *global, bool force_stderr); bool mp_msg_has_status_line(struct mpv_global *global); +bool mp_msg_has_log_file(struct mpv_global *global); void mp_msg_flush_status_line(struct mp_log *log); diff --git a/player/main.c b/player/main.c index 2045e3b40a..fa00f0a463 100644 --- a/player/main.c +++ b/player/main.c @@ -114,6 +114,8 @@ static bool cas_terminal_owner(struct MPContext *old, struct MPContext *new) void mp_update_logging(struct MPContext *mpctx, bool preinit) { + bool had_log_file = mp_msg_has_log_file(mpctx->global); + mp_msg_update_msglevels(mpctx->global); bool enable = mpctx->opts->use_terminal; @@ -128,6 +130,9 @@ void mp_update_logging(struct MPContext *mpctx, bool preinit) } } + if (mp_msg_has_log_file(mpctx->global) && !had_log_file) + mp_print_version(mpctx->log, false); // for log-file=... in config files + if (enabled && !preinit && mpctx->opts->consolecontrols) terminal_setup_getch(mpctx->input); }