From 85977634c1c98d3c31cfd98f9efb5922dfa40a2c Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Fri, 9 Oct 2020 16:30:00 +0200 Subject: [PATCH] client-node: only add props and params when mask is set --- src/modules/module-client-node/protocol-native.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/modules/module-client-node/protocol-native.c b/src/modules/module-client-node/protocol-native.c index eba2160b5..1d3385f77 100644 --- a/src/modules/module-client-node/protocol-native.c +++ b/src/modules/module-client-node/protocol-native.c @@ -126,7 +126,7 @@ client_node_marshal_update(void *object, struct pw_proxy *proxy = object; struct spa_pod_builder *b; struct spa_pod_frame f[2]; - uint32_t i, n_items; + uint32_t i, n_items, n_info_params; b = pw_protocol_native_begin_proxy(proxy, PW_CLIENT_NODE_METHOD_UPDATE, NULL); @@ -141,12 +141,15 @@ client_node_marshal_update(void *object, if (info) { uint64_t change_mask = info->change_mask; - n_items = info->props ? info->props->n_items : 0; - change_mask &= SPA_NODE_CHANGE_MASK_FLAGS | SPA_NODE_CHANGE_MASK_PROPS | SPA_NODE_CHANGE_MASK_PARAMS; + n_items = info->props && (change_mask & SPA_NODE_CHANGE_MASK_PROPS) ? + info->props->n_items : 0; + n_info_params = (change_mask & SPA_NODE_CHANGE_MASK_PARAMS) ? + info->n_params : 0; + spa_pod_builder_push_struct(b, &f[1]); spa_pod_builder_add(b, SPA_POD_Int(info->max_input_ports), @@ -157,8 +160,8 @@ client_node_marshal_update(void *object, for (i = 0; i < n_items; i++) push_item(b, &info->props->items[i]); spa_pod_builder_add(b, - SPA_POD_Int(info->n_params), NULL); - for (i = 0; i < info->n_params; i++) { + SPA_POD_Int(n_info_params), NULL); + for (i = 0; i < n_info_params; i++) { spa_pod_builder_add(b, SPA_POD_Id(info->params[i].id), SPA_POD_Int(info->params[i].flags), NULL);