protocol: fix permission marshal, skip default permissions

This commit is contained in:
Wim Taymans 2019-01-10 16:35:25 +01:00
parent a55330fe29
commit 2ab96db5b5

View file

@ -1093,18 +1093,25 @@ static void client_marshal_permissions(void *object, uint32_t index, uint32_t n_
{ {
struct pw_resource *resource = object; struct pw_resource *resource = object;
struct spa_pod_builder *b; struct spa_pod_builder *b;
uint32_t i; uint32_t i, n = 0;
b = pw_protocol_native_begin_resource(resource, PW_CLIENT_PROXY_EVENT_PERMISSIONS); b = pw_protocol_native_begin_resource(resource, PW_CLIENT_PROXY_EVENT_PERMISSIONS);
for (i = 0; i < n_permissions; i++) {
if (permissions[i].permissions != SPA_ID_INVALID)
n++;
}
spa_pod_builder_add(b, spa_pod_builder_add(b,
"[ i", index, "[ i", index,
"i", n_permissions, NULL); "i", n, NULL);
for (i = 0; i < n_permissions; i++) { for (i = 0; i < n_permissions; i++) {
if (permissions[i].permissions == SPA_ID_INVALID)
continue;
spa_pod_builder_add(b, spa_pod_builder_add(b,
"s", permissions[i].id, "i", permissions[i].id,
"s", permissions[i].permissions, NULL); "i", permissions[i].permissions, NULL);
} }
spa_pod_builder_add(b, "]", NULL); spa_pod_builder_add(b, "]", NULL);
@ -1175,7 +1182,7 @@ static void client_marshal_get_permissions(void *object, uint32_t index, uint32_
spa_pod_builder_add_struct(b, spa_pod_builder_add_struct(b,
"i", index, "i", index,
"i", num, NULL); "i", num);
pw_protocol_native_end_proxy(proxy, b); pw_protocol_native_end_proxy(proxy, b);
} }