summaryrefslogtreecommitdiffstats
path: root/options/m_property.c
diff options
context:
space:
mode:
authorKacper Michajłow <kasper93@gmail.com>2023-09-01 03:07:28 +0200
committerNiklas Haas <github-daiK1o@haasn.dev>2023-10-14 12:30:46 +0200
commit4bbe9618851270eaf5a169b67bff139a65ffbbe4 (patch)
treec179e85af0181133443bfb4183a23300bca7b2d4 /options/m_property.c
parent273906490d00582d26404e470731c97197c96db2 (diff)
downloadmpv-4bbe9618851270eaf5a169b67bff139a65ffbbe4.tar.bz2
mpv-4bbe9618851270eaf5a169b67bff139a65ffbbe4.tar.xz
m_property: add read_sub_validate to check if should be processed
In many cases it makes sense to early exit instead of preparing all the data only to return type or not implemented.
Diffstat (limited to 'options/m_property.c')
-rw-r--r--options/m_property.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/options/m_property.c b/options/m_property.c
index fa91fd1162..7667dd6161 100644
--- a/options/m_property.c
+++ b/options/m_property.c
@@ -432,6 +432,23 @@ int m_property_strdup_ro(int action, void* arg, const char *var)
return M_PROPERTY_NOT_IMPLEMENTED;
}
+int m_property_read_sub_validate(void *ctx, struct m_property *prop,
+ int action, void *arg)
+{
+ m_property_unkey(&action, &arg);
+ switch (action) {
+ case M_PROPERTY_GET_TYPE:
+ *(struct m_option *)arg = (struct m_option){.type = CONF_TYPE_NODE};
+ return M_PROPERTY_OK;
+ case M_PROPERTY_GET:
+ case M_PROPERTY_PRINT:
+ case M_PROPERTY_KEY_ACTION:
+ return M_PROPERTY_VALID;
+ default:
+ return M_PROPERTY_NOT_IMPLEMENTED;
+ };
+}
+
// This allows you to make a list of values (like from a struct) available
// as a number of sub-properties. The property list is set up with the current
// property values on the stack before calling this function.