summaryrefslogtreecommitdiffstats
path: root/options/m_property.c
diff options
context:
space:
mode:
Diffstat (limited to 'options/m_property.c')
-rw-r--r--options/m_property.c11
1 files changed, 11 insertions, 0 deletions
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);
}