command: add property indicating per-file options

Fixes #2165, more or less.
This commit is contained in:
wm4 2015-07-23 22:59:04 +02:00
parent 86a60a4dd2
commit 3cbf68b470
5 changed files with 11 additions and 0 deletions

View File

@ -20,6 +20,7 @@ Interface changes
::
--- mpv 0.10.0 will be released ---
- add "option-info/<name>/set-locally" property
- add --cache-backbuffer; change --cache-default default to 75MB
the new total cache size is the sum of backbuffer and the cache size
specified by --cache-default or --cache

View File

@ -1872,6 +1872,12 @@ Property list
``no`` otherwise. What this is set to if the option is e.g. changed
at runtime is left undefined (meaning it could change in the future).
``option-info/<name>/set-locally``
Return ``yes`` if the option was set per-file. This is the case with
automatically loaded profiles, file-dir configs, and other cases. It
means the option value will be restored to the value before playback
start when playback ends.
``option-info/<name>/default-value``
The default value of the option. May not always be available.

View File

@ -272,6 +272,7 @@ static void ensure_backup(struct m_config *config, struct m_config_option *co)
m_option_copy(co->opt, bc->backup, co->data);
bc->next = config->backup_opts;
config->backup_opts = bc;
co->is_set_locally = true;
}
void m_config_restore_backups(struct m_config *config)
@ -282,6 +283,7 @@ void m_config_restore_backups(struct m_config *config)
m_option_copy(bc->co->opt, bc->co->data, bc->backup);
m_option_free(bc->co->opt, bc->backup);
bc->co->is_set_locally = false;
talloc_free(bc);
}
}

View File

@ -39,6 +39,7 @@ struct mp_log;
struct m_config_option {
bool is_generated : 1; // Automatically added ("no-" options)
bool is_set_from_cmdline : 1; // Set by user from command line
bool is_set_locally : 1; // Has a backup entry
bool warning_was_printed : 1;
const char *name; // Full name (ie option-subopt)
const struct m_option *opt; // Option description

View File

@ -3261,6 +3261,7 @@ static int mp_property_option_info(void *ctx, struct m_property *prop,
{"name", SUB_PROP_STR(co->name)},
{"type", SUB_PROP_STR(opt->type->name)},
{"set-from-commandline", SUB_PROP_FLAG(co->is_set_from_cmdline)},
{"set-locally", SUB_PROP_FLAG(co->is_set_locally)},
{"default-value", *opt, def},
{"min", SUB_PROP_DOUBLE(opt->min),
.unavailable = !(has_minmax && (opt->flags & M_OPT_MIN))},