diff options
author | wm4 <wm4@nowhere> | 2012-08-04 11:14:38 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2012-08-04 19:59:56 +0200 |
commit | 37c03f2c81a443e910eeb3b2613865dce59c54bf (patch) | |
tree | e9d5ae5c0ed1fce9f6f689f03edec75bf1e7cca4 /m_config.c | |
parent | ab63072b47f9710852636a78a339b368b493e329 (diff) | |
download | mpv-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.c | 15 |
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 |