diff options
Diffstat (limited to 'options')
-rw-r--r-- | options/m_config.c | 7 | ||||
-rw-r--r-- | options/m_config.h | 2 | ||||
-rw-r--r-- | options/m_property.c | 11 | ||||
-rw-r--r-- | options/m_property.h | 6 | ||||
-rw-r--r-- | options/options.c | 3 |
5 files changed, 23 insertions, 6 deletions
diff --git a/options/m_config.c b/options/m_config.c index 7cc9a46792..6dd72380d9 100644 --- a/options/m_config.c +++ b/options/m_config.c @@ -87,9 +87,6 @@ struct m_opt_backup { void *backup; }; -static struct m_config_option *m_config_get_co_raw(const struct m_config *config, - struct bstr name); - static int parse_include(struct m_config *config, struct bstr param, bool set, int flags) { @@ -556,8 +553,8 @@ static void m_config_add_option(struct m_config *config, MP_TARRAY_APPEND(config, config->opts, config->num_opts, co); } -static struct m_config_option *m_config_get_co_raw(const struct m_config *config, - struct bstr name) +struct m_config_option *m_config_get_co_raw(const struct m_config *config, + struct bstr name) { if (!name.len) return NULL; diff --git a/options/m_config.h b/options/m_config.h index 9440bd5833..8befc51805 100644 --- a/options/m_config.h +++ b/options/m_config.h @@ -190,6 +190,8 @@ int m_config_set_option_node(struct m_config *config, bstr name, int m_config_parse_suboptions(struct m_config *config, char *name, char *subopts); +struct m_config_option *m_config_get_co_raw(const struct m_config *config, + struct bstr name); struct m_config_option *m_config_get_co(const struct m_config *config, struct bstr name); diff --git a/options/m_property.c b/options/m_property.c index 13d3844671..ba8d37b2e6 100644 --- a/options/m_property.c +++ b/options/m_property.c @@ -115,6 +115,10 @@ int m_property_do(struct mp_log *log, const struct m_property *prop_list, M_PROPERTY_NOT_IMPLEMENTED) return r; // Fallback to m_option + r = do_action(prop_list, name, M_PROPERTY_GET_CONSTRICTED_TYPE, &opt, ctx); + if (r <= 0) + return r; + assert(opt.type); if (!opt.type->add) return M_PROPERTY_NOT_IMPLEMENTED; if ((r = do_action(prop_list, name, M_PROPERTY_GET, &val, ctx)) <= 0) @@ -124,6 +128,13 @@ int m_property_do(struct mp_log *log, const struct m_property *prop_list, m_option_free(&opt, &val); return r; } + case M_PROPERTY_GET_CONSTRICTED_TYPE: { + if ((r = do_action(prop_list, name, action, arg, ctx)) >= 0) + return r; + if ((r = do_action(prop_list, name, M_PROPERTY_GET_TYPE, arg, ctx)) >= 0) + return r; + return M_PROPERTY_NOT_IMPLEMENTED; + } case M_PROPERTY_SET: { return do_action(prop_list, name, M_PROPERTY_SET, arg, ctx); } diff --git a/options/m_property.h b/options/m_property.h index 0f8230608b..d6c8c5aab3 100644 --- a/options/m_property.h +++ b/options/m_property.h @@ -48,6 +48,12 @@ enum mp_property_action { // arg: char** M_PROPERTY_PRINT, + // Like M_PROPERTY_GET_TYPE, but get a type that is compatible to the real + // type, but reflect practical limits, such as runtime-available values. + // This is mostly used for "UI" related things. + // (Example: volume property.) + M_PROPERTY_GET_CONSTRICTED_TYPE, + // Switch the property up/down by a given value. // If unimplemented, the property wrapper uses the property type as // fallback. diff --git a/options/options.c b/options/options.c index 2ae0f6ad3b..6db3e945a9 100644 --- a/options/options.c +++ b/options/options.c @@ -296,7 +296,8 @@ const m_option_t mp_opts[] = { #if HAVE_DVDREAD || HAVE_DVDNAV OPT_SUBSTRUCT("", dvd_opts, dvd_conf, 0), #endif /* HAVE_DVDREAD */ - OPT_INTPAIR("chapter", chapterrange, 0), + OPT_INTPAIR("chapter", chapterrange, 0, .deprecation_message = "instead of " + "--chapter=A-B use --start=#A --end=#B+1"), OPT_CHOICE_OR_INT("edition", edition_id, 0, 0, 8190, ({"auto", -1})), #if HAVE_LIBBLURAY |