mirror of
https://github.com/mpv-player/mpv.git
synced 2026-06-06 20:10:30 +00:00
Unlike --term-playing-msg, the --term-title string is printed in an escape sequence already. If we print other escapes during this sequence, it will abort the sequence and dump the rest of the title string as a visible string to the user, and possibly beep as well, since the title string can end with a bel character. Also updates the manpage to remove a comment about win32, since terminal-win.c does handle OSC title sequences, calling SetConsoleTitleW.
102 lines
3.8 KiB
C
102 lines
3.8 KiB
C
/*
|
|
* This file is part of mpv.
|
|
*
|
|
* mpv is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* mpv is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with mpv. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef MPLAYER_MP_MSG_H
|
|
#define MPLAYER_MP_MSG_H
|
|
|
|
#include <stdarg.h>
|
|
#include <stdbool.h>
|
|
#include <stdlib.h>
|
|
#include <stdint.h>
|
|
|
|
#include "osdep/compiler.h"
|
|
|
|
// Escape code for TERM_MSG codes. PU2 (U+0092) followed by 't'.
|
|
#define TERM_MSG_ESCAPE "\xC2\x92" "t"
|
|
#define TERM_MSG_0 TERM_MSG_ESCAPE "0"
|
|
|
|
struct mp_log;
|
|
|
|
// A mp_log instance that never outputs anything.
|
|
extern struct mp_log *const mp_null_log;
|
|
|
|
// Verbosity levels.
|
|
enum {
|
|
MSGL_FATAL, // only errors (difference to MSGL_ERR isn't too clear)
|
|
MSGL_ERR, // only errors
|
|
MSGL_WARN, // only warnings
|
|
MSGL_INFO, // what you normally see on the terminal
|
|
MSGL_STATUS, // exclusively for the playback status line (-quiet disables)
|
|
MSGL_V, // -v | slightly more information than default
|
|
MSGL_DEBUG, // -v -v | full debug information; this and numerically below
|
|
// should not produce "per frame" output
|
|
MSGL_TRACE, // -v -v -v | anything that might flood the terminal
|
|
MSGL_STATS, // dumping fine grained stats (--dump-stats)
|
|
|
|
MSGL_MAX = MSGL_STATS,
|
|
};
|
|
|
|
struct mp_log *mp_log_new(void *talloc_ctx, struct mp_log *parent,
|
|
const char *name);
|
|
|
|
void mp_msg(struct mp_log *log, int lev, const char *format, ...)
|
|
MP_PRINTF_ATTRIBUTE(3, 4);
|
|
void mp_msg_va(struct mp_log *log, int lev, const char *format, va_list va)
|
|
MP_PRINTF_ATTRIBUTE(3, 0);
|
|
|
|
int mp_msg_level(struct mp_log *log);
|
|
|
|
static inline bool mp_msg_test(struct mp_log *log, int lev)
|
|
{
|
|
return lev <= mp_msg_level(log);
|
|
}
|
|
|
|
void mp_msg_set_max_level(struct mp_log *log, int lev);
|
|
|
|
// Sanitize text for terminal output.
|
|
struct bstr;
|
|
void mp_msg_sanitize(struct bstr *text, bool allow_sgr);
|
|
|
|
// Convenience macros.
|
|
#define mp_fatal(log, ...) mp_msg(log, MSGL_FATAL, __VA_ARGS__)
|
|
#define mp_err(log, ...) mp_msg(log, MSGL_ERR, __VA_ARGS__)
|
|
#define mp_warn(log, ...) mp_msg(log, MSGL_WARN, __VA_ARGS__)
|
|
#define mp_info(log, ...) mp_msg(log, MSGL_INFO, __VA_ARGS__)
|
|
#define mp_verbose(log, ...) mp_msg(log, MSGL_V, __VA_ARGS__)
|
|
#define mp_dbg(log, ...) mp_msg(log, MSGL_DEBUG, __VA_ARGS__)
|
|
#define mp_trace(log, ...) mp_msg(log, MSGL_TRACE, __VA_ARGS__)
|
|
|
|
// Convenience macros, typically called with a pointer to a context struct
|
|
// as first argument, which has a "struct mp_log *log;" member.
|
|
|
|
#define MP_MSG(obj, lev, ...) mp_msg((obj)->log, lev, __VA_ARGS__)
|
|
|
|
#define MP_FATAL(obj, ...) MP_MSG(obj, MSGL_FATAL, __VA_ARGS__)
|
|
#define MP_ERR(obj, ...) MP_MSG(obj, MSGL_ERR, __VA_ARGS__)
|
|
#define MP_WARN(obj, ...) MP_MSG(obj, MSGL_WARN, __VA_ARGS__)
|
|
#define MP_INFO(obj, ...) MP_MSG(obj, MSGL_INFO, __VA_ARGS__)
|
|
#define MP_VERBOSE(obj, ...) MP_MSG(obj, MSGL_V, __VA_ARGS__)
|
|
#define MP_DBG(obj, ...) MP_MSG(obj, MSGL_DEBUG, __VA_ARGS__)
|
|
#define MP_TRACE(obj, ...) MP_MSG(obj, MSGL_TRACE, __VA_ARGS__)
|
|
|
|
// This is a bit special. See TOOLS/stats-conv.py what rules text passed
|
|
// to these functions should follow. Also see --dump-stats.
|
|
#define mp_stats(obj, ...) mp_msg(obj, MSGL_STATS, __VA_ARGS__)
|
|
#define MP_STATS(obj, ...) MP_MSG(obj, MSGL_STATS, __VA_ARGS__)
|
|
|
|
#endif /* MPLAYER_MP_MSG_H */
|