mirror of
https://github.com/mpv-player/mpv
synced 2024-11-03 03:19:24 +01:00
command: silence deprecation warnings with --reset-on-next-file=all
--reset-on-next-file=all triggers m_config_backup_all_opts(), which backups all options (even deprecated ones). Later, when the option values are reset with m_config_restore_backups(), mp_on_set_option() is called, which in turn calls mp_property_do_silent(), which in turn will call mp_property_generic_option() and m_config_get_co(), which triggers the deprecation message. Unfortunately there's no good way to determine whether an option has actually changed (there's no option value compare operation), so the deprecated options have to be set no matter what. On the other hand, we can't pass through additional flags through the property layer. So we add a dumb global flag to silence the deprecation warnings in these cases. Fortunately m_config_get_co_raw() works to silence the warnings. m_config_get_co() also resolves aliases (deprecated and non-deprecated), but aliased options are handled differently by the option-property bridge, so we don't need to do that here, so the only purpose of it is to trigger a warning for deprecated (non-alias) options.
This commit is contained in:
parent
11b8cbcce7
commit
bf5c4c42fa
@ -104,6 +104,8 @@ struct command_ctx {
|
||||
|
||||
char *cur_ipc;
|
||||
char *cur_ipc_input;
|
||||
|
||||
int silence_option_deprecations;
|
||||
};
|
||||
|
||||
struct overlay {
|
||||
@ -342,8 +344,13 @@ static int mp_property_generic_option(void *ctx, struct m_property *prop,
|
||||
MPContext *mpctx = ctx;
|
||||
const char *optname = prop->name;
|
||||
int flags = M_SETOPT_RUNTIME;
|
||||
struct m_config_option *opt = m_config_get_co(mpctx->mconfig,
|
||||
bstr0(optname));
|
||||
struct m_config_option *opt;
|
||||
if (mpctx->command_ctx->silence_option_deprecations) {
|
||||
// This case is specifically for making --reset-on-next-file=all silent.
|
||||
opt = m_config_get_co_raw(mpctx->mconfig, bstr0(optname));
|
||||
} else {
|
||||
opt = m_config_get_co(mpctx->mconfig, bstr0(optname));
|
||||
}
|
||||
|
||||
if (!opt)
|
||||
return M_PROPERTY_UNKNOWN;
|
||||
@ -4154,7 +4161,9 @@ static int mp_property_do_silent(const char *name, int action, void *val,
|
||||
struct MPContext *ctx)
|
||||
{
|
||||
struct command_ctx *cmd = ctx->command_ctx;
|
||||
cmd->silence_option_deprecations += 1;
|
||||
int r = m_property_do(ctx->log, cmd->properties, name, action, val, ctx);
|
||||
cmd->silence_option_deprecations -= 1;
|
||||
if (r == M_PROPERTY_OK && is_property_set(action, val))
|
||||
mp_notify_property(ctx, (char *)name);
|
||||
return r;
|
||||
|
Loading…
Reference in New Issue
Block a user