diff options
-rw-r--r-- | src/pipewire/global.c | 10 |
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; } |