summaryrefslogtreecommitdiffstats
path: root/m_config.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2012-08-04 11:14:38 +0200
committerwm4 <wm4@nowhere>2012-08-04 19:59:56 +0200
commit37c03f2c81a443e910eeb3b2613865dce59c54bf (patch)
treee9d5ae5c0ed1fce9f6f689f03edec75bf1e7cca4 /m_config.c
parentab63072b47f9710852636a78a339b368b493e329 (diff)
downloadmpv-37c03f2c81a443e910eeb3b2613865dce59c54bf.tar.bz2
mpv-37c03f2c81a443e910eeb3b2613865dce59c54bf.tar.xz
options: revert passing around talloc contexts
This reverts commit 48f0692ab9 "options: make option struct the talloc parent of options". This made things actually more complicated. It introduced a new parameter to the option parse and copy functions, which was used inconsistently. Some code passed a parent, some not. Morever, you have to call m_option_free() anyway, because not all options actually respect the talloc parent. There is also the question whether passing NULL as parent is supposed to work, or if you still have to implement m_config_free(). On the other hand, this simplifies nothing. I assume the intention was being able to free all option values with a single talloc_free() call, but the same goal can be reached by simply freeing the m_config struct. (The m_config talloc destructor will free each option values.) Get rid of the talloc parent context parameter. This essentially reverts commit 48f0692ab9 ("options: make option struct the talloc parent of options"). In video_out.c, make the VO priv struct the talloc parent for the m_config object, so that destroying the VO will free the options. The ability to free the m_config struct and all its managed options was introduced in commit 89a17bcda6c.
Diffstat (limited to 'm_config.c')
-rw-r--r--m_config.c15
1 files changed, 5 insertions, 10 deletions
diff --git a/m_config.c b/m_config.c
index 8181ddac37..075adcd633 100644
--- a/m_config.c
+++ b/m_config.c
@@ -67,8 +67,7 @@ static int parse_profile(struct m_config *config, const struct m_option *opt,
}
char **list = NULL;
- int r = m_option_type_string_list.parse(opt, name, param, false, &list,
- NULL);
+ int r = m_option_type_string_list.parse(opt, name, param, false, &list);
if (r < 0)
return r;
if (!list || !list[0])
@@ -151,7 +150,7 @@ static void optstruct_get(const struct m_config *config,
void *dst)
{
if (opt->type->copy)
- opt->type->copy(opt, dst, optstruct_ptr(config, opt), NULL);
+ opt->type->copy(opt, dst, optstruct_ptr(config, opt));
}
static void optstruct_set(const struct m_config *config,
@@ -159,11 +158,9 @@ static void optstruct_set(const struct m_config *config,
const void *src)
{
if (opt->type->copy)
- opt->type->copy(opt, optstruct_ptr(config, opt), src, config->optstruct);
+ opt->type->copy(opt, optstruct_ptr(config, opt), src);
}
-
-
static void m_config_add_option(struct m_config *config,
const struct m_option *arg,
const char *prefix, char *disabled_feature);
@@ -445,8 +442,7 @@ static int m_config_parse_option(struct m_config *config, void *optstruct,
ensure_backup(config, co);
void *dst = set ? m_option_get_ptr(co->opt, optstruct) : NULL;
- int r = co->opt->type->parse(co->opt, name, param, ambiguous_param, dst,
- optstruct);
+ int r = m_option_parse(co->opt, name, param, ambiguous_param, dst);
// Parsing failed ?
if (r < 0)
return r;
@@ -461,8 +457,7 @@ static int parse_subopts(struct m_config *config, void *optstruct, char *name,
{
char **lst = NULL;
// Split the argument into child options
- int r = m_option_type_subconfig.parse(NULL, bstr0(""), param, false, &lst,
- optstruct);
+ int r = m_option_type_subconfig.parse(NULL, bstr0(""), param, false, &lst);
if (r < 0)
return r;
// Parse the child options