summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/pipewire/global.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/pipewire/global.c b/src/pipewire/global.c
index 00258ff8..c963965e 100644
--- a/src/pipewire/global.c
+++ b/src/pipewire/global.c
@@ -38,9 +38,15 @@ uint32_t pw_global_get_permissions(struct pw_global *global, struct pw_client *c
{
uint32_t perms = PW_PERM_RWX;
- if (client->permission_func != NULL)
- perms &= client->permission_func(global, client, client->permission_data);
+ if (client->permission_func == NULL)
+ return perms;
+
+ perms = client->permission_func(global, client, client->permission_data);
+ while (global != global->parent) {
+ global = global->parent;
+ perms &= client->permission_func(global, client, client->permission_data);
+ }
return perms;
}