client-node: only add props and params when mask is set

This commit is contained in:
Wim Taymans 2020-10-09 16:30:00 +02:00
parent 12e6dd89e2
commit 85977634c1

View file

@ -126,7 +126,7 @@ client_node_marshal_update(void *object,
struct pw_proxy *proxy = object; struct pw_proxy *proxy = object;
struct spa_pod_builder *b; struct spa_pod_builder *b;
struct spa_pod_frame f[2]; 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); 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) { if (info) {
uint64_t change_mask = info->change_mask; uint64_t change_mask = info->change_mask;
n_items = info->props ? info->props->n_items : 0;
change_mask &= SPA_NODE_CHANGE_MASK_FLAGS | change_mask &= SPA_NODE_CHANGE_MASK_FLAGS |
SPA_NODE_CHANGE_MASK_PROPS | SPA_NODE_CHANGE_MASK_PROPS |
SPA_NODE_CHANGE_MASK_PARAMS; 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_push_struct(b, &f[1]);
spa_pod_builder_add(b, spa_pod_builder_add(b,
SPA_POD_Int(info->max_input_ports), SPA_POD_Int(info->max_input_ports),
@ -157,8 +160,8 @@ client_node_marshal_update(void *object,
for (i = 0; i < n_items; i++) for (i = 0; i < n_items; i++)
push_item(b, &info->props->items[i]); push_item(b, &info->props->items[i]);
spa_pod_builder_add(b, spa_pod_builder_add(b,
SPA_POD_Int(info->n_params), NULL); SPA_POD_Int(n_info_params), NULL);
for (i = 0; i < info->n_params; i++) { for (i = 0; i < n_info_params; i++) {
spa_pod_builder_add(b, spa_pod_builder_add(b,
SPA_POD_Id(info->params[i].id), SPA_POD_Id(info->params[i].id),
SPA_POD_Int(info->params[i].flags), NULL); SPA_POD_Int(info->params[i].flags), NULL);