summaryrefslogtreecommitdiffstats
path: root/core/parser-cfg.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-08-02 17:59:43 +0200
committerwm4 <wm4@nowhere>2013-08-02 18:00:38 +0200
commitd1c563c0a9f24e8ed661c29a8718f7fde162a4ff (patch)
treed8ca65b9ee32ffe5d354a6952193403640b9fa4c /core/parser-cfg.c
parent878a94d000093d253206cc50e10632d64f8728cb (diff)
downloadmpv-d1c563c0a9f24e8ed661c29a8718f7fde162a4ff.tar.bz2
mpv-d1c563c0a9f24e8ed661c29a8718f7fde162a4ff.tar.xz
options: don't make options set during playback file local (e.g. --vf)
Refactor file local options handling: instead of making all options implicitly file local between loading a file and terminating playback, explicitly make options file local which are required to be file local. Or in other words, introduce a M_SETOPT_BACKUP flag, which forces file local-ness when setting an option, and use this for file local command line options, per-file config files, and per-protocol/extension/vo/ao profiles. In particular, this changes the "vf" input command such that video filters stay permanent even when going to the next file in the playlist. The underlying reason for this is that the "vf" command uses the option setting command. This influences the "af" command as well.
Diffstat (limited to 'core/parser-cfg.c')
-rw-r--r--core/parser-cfg.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/core/parser-cfg.c b/core/parser-cfg.c
index 8f90d3f5e6..a69f4545d2 100644
--- a/core/parser-cfg.c
+++ b/core/parser-cfg.c
@@ -41,9 +41,11 @@ static int recursion_depth = 0;
/// Setup the \ref Config from a config file.
/** \param config The config object.
* \param conffile Path to the config file.
+ * \param flags M_SETOPT_* bits
* \return 1 on sucess, -1 on error, 0 if file not accessible.
*/
-int m_config_parse_config_file(m_config_t *config, const char *conffile)
+int m_config_parse_config_file(m_config_t *config, const char *conffile,
+ int flags)
{
#define PRINT_LINENUM mp_msg(MSGT_CFGPARSER, MSGL_ERR, "%s:%d: ", conffile, line_num)
#define MAX_LINE_LEN 10000
@@ -63,6 +65,8 @@ int m_config_parse_config_file(m_config_t *config, const char *conffile)
int errors = 0;
m_profile_t *profile = NULL;
+ flags = flags | M_SETOPT_FROM_CONFIG_FILE;
+
mp_msg(MSGT_CFGPARSER, MSGL_V, "Reading config file %s", conffile);
if (recursion_depth > MAX_RECURSION_DEPTH) {
@@ -219,8 +223,7 @@ int m_config_parse_config_file(m_config_t *config, const char *conffile)
if (profile) {
tmp = m_config_set_profile_option(config, profile, bopt, bparam);
} else {
- tmp = m_config_set_option_ext(config, bopt, bparam,
- M_SETOPT_FROM_CONFIG_FILE);
+ tmp = m_config_set_option_ext(config, bopt, bparam, flags);
}
if (tmp < 0) {
PRINT_LINENUM;