diff options
author | wm4 <wm4@nowhere> | 2017-05-22 18:30:39 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2017-05-22 18:31:39 +0200 |
commit | 25a4d10c8e75d9ff94e843d4951ab1eb2917435e (patch) | |
tree | be6df52ee4965ce2e9583e095c5f22cc70814541 | |
parent | 5974f575a6ac9c107afa292bd877a73a5221952b (diff) | |
download | mpv-25a4d10c8e75d9ff94e843d4951ab1eb2917435e.tar.bz2 mpv-25a4d10c8e75d9ff94e843d4951ab1eb2917435e.tar.xz |
player: make sure version information is always included in --log-file
If --log-file was used in config files, this could be missing due to the
exact timing when the messages are print, and when the options are
applied. Fix this by always dumping the version again when a log file is
opened.
-rw-r--r-- | common/msg.c | 13 | ||||
-rw-r--r-- | common/msg_control.h | 1 | ||||
-rw-r--r-- | player/main.c | 5 |
3 files changed, 19 insertions, 0 deletions
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); } |