client: add function to check permissions of a client

This commit is contained in:
Wim Taymans 2020-07-30 15:16:30 +02:00
parent a5ec68e61c
commit bd8b239621
2 changed files with 21 additions and 0 deletions

View file

@ -670,3 +670,20 @@ void pw_impl_client_set_busy(struct pw_impl_client *client, bool busy)
pw_impl_client_emit_busy_changed(client, busy); pw_impl_client_emit_busy_changed(client, busy);
} }
} }
SPA_EXPORT
int pw_impl_client_check_permissions(struct pw_impl_client *client,
uint32_t global_id, uint32_t permissions)
{
struct pw_context *context = client->context;
struct pw_global *global;
uint32_t perms;
if ((global = pw_context_find_global(context, global_id)) == NULL)
return -ENOENT;
perms = pw_global_get_permissions(global, client);
if ((perms & permissions) != permissions)
return -EPERM;
return 0;
}

View file

@ -135,6 +135,10 @@ int pw_impl_client_update_properties(struct pw_impl_client *client, const struct
int pw_impl_client_update_permissions(struct pw_impl_client *client, uint32_t n_permissions, int pw_impl_client_update_permissions(struct pw_impl_client *client, uint32_t n_permissions,
const struct pw_permission *permissions); const struct pw_permission *permissions);
/** check if a client has permissions for global_id, Since 0.3.9 */
int pw_impl_client_check_permissions(struct pw_impl_client *client,
uint32_t global_id, uint32_t permissions);
/** Get the client properties */ /** Get the client properties */
const struct pw_properties *pw_impl_client_get_properties(struct pw_impl_client *client); const struct pw_properties *pw_impl_client_get_properties(struct pw_impl_client *client);