summaryrefslogtreecommitdiffstats
path: root/options
diff options
context:
space:
mode:
Diffstat (limited to 'options')
-rw-r--r--options/m_config.c7
-rw-r--r--options/m_config.h2
-rw-r--r--options/m_property.c11
-rw-r--r--options/m_property.h6
-rw-r--r--options/options.c3
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