diff options
Diffstat (limited to 'options/m_property.c')
-rw-r--r-- | options/m_property.c | 11 |
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); } |