From eea6e7a1fb01bbcb7e06ece01f2b3e1b4ac71bea Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 20 Oct 2021 11:56:03 +0200 Subject: [PATCH] spa: add method to check if an object is fixated See #1732 --- spa/include/spa/pod/iter.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/spa/include/spa/pod/iter.h b/spa/include/spa/pod/iter.h index b710a816b..d3dcf139d 100644 --- a/spa/include/spa/pod/iter.h +++ b/spa/include/spa/pod/iter.h @@ -446,6 +446,24 @@ static inline int spa_pod_fixate(struct spa_pod *pod) return spa_pod_object_fixate((struct spa_pod_object *)pod); } +static inline int spa_pod_object_is_fixated(const struct spa_pod_object *pod) +{ + struct spa_pod_prop *res; + SPA_POD_OBJECT_FOREACH(pod, res) { + if (res->value.type == SPA_TYPE_Choice && + ((struct spa_pod_choice*)&res->value)->body.type != SPA_CHOICE_None) + return 0; + } + return 1; +} + +static inline int spa_pod_is_fixated(const struct spa_pod *pod) +{ + if (!spa_pod_is_object(pod)) + return -EINVAL; + return spa_pod_object_is_fixated((const struct spa_pod_object *)pod); +} + /** * \} */