mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-04 13:30:12 -05:00
remote: add _get_fd method
Add a method to get the fd of the connection.
This commit is contained in:
parent
a79e8923b5
commit
bc35d30407
5 changed files with 22 additions and 0 deletions
|
|
@ -527,6 +527,15 @@ static int impl_connect(struct pw_protocol_client *client)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int impl_get_fd(struct pw_protocol_client *client)
|
||||||
|
{
|
||||||
|
struct client *impl = SPA_CONTAINER_OF(client, struct client, this);
|
||||||
|
|
||||||
|
if (impl->source == NULL)
|
||||||
|
return -EIO;
|
||||||
|
|
||||||
|
return impl->source->fd;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
on_remote_data(void *data, int fd, enum spa_io mask)
|
on_remote_data(void *data, int fd, enum spa_io mask)
|
||||||
|
|
@ -698,6 +707,7 @@ impl_new_client(struct pw_protocol *protocol,
|
||||||
impl->properties = properties ? pw_properties_copy(properties) : NULL;
|
impl->properties = properties ? pw_properties_copy(properties) : NULL;
|
||||||
|
|
||||||
this->connect = impl_connect;
|
this->connect = impl_connect;
|
||||||
|
this->get_fd = impl_get_fd;
|
||||||
this->connect_fd = impl_connect_fd;
|
this->connect_fd = impl_connect_fd;
|
||||||
this->disconnect = impl_disconnect;
|
this->disconnect = impl_disconnect;
|
||||||
this->destroy = impl_destroy;
|
this->destroy = impl_destroy;
|
||||||
|
|
|
||||||
|
|
@ -127,6 +127,7 @@ pw_global_register(struct pw_global *global,
|
||||||
|
|
||||||
spa_list_for_each(registry, &core->registry_resource_list, link) {
|
spa_list_for_each(registry, &core->registry_resource_list, link) {
|
||||||
uint32_t permissions = pw_global_get_permissions(global, registry->client);
|
uint32_t permissions = pw_global_get_permissions(global, registry->client);
|
||||||
|
pw_log_debug("registry %p: global %d %08x", registry, global->id, permissions);
|
||||||
if (PW_PERM_IS_R(permissions))
|
if (PW_PERM_IS_R(permissions))
|
||||||
pw_registry_resource_global(registry,
|
pw_registry_resource_global(registry,
|
||||||
global->id,
|
global->id,
|
||||||
|
|
@ -240,6 +241,7 @@ void pw_global_destroy(struct pw_global *global)
|
||||||
if (global->id != SPA_ID_INVALID) {
|
if (global->id != SPA_ID_INVALID) {
|
||||||
spa_list_for_each(registry, &core->registry_resource_list, link) {
|
spa_list_for_each(registry, &core->registry_resource_list, link) {
|
||||||
uint32_t permissions = pw_global_get_permissions(global, registry->client);
|
uint32_t permissions = pw_global_get_permissions(global, registry->client);
|
||||||
|
pw_log_debug("registry %p: global %d %08x", registry, global->id, permissions);
|
||||||
if (PW_PERM_IS_R(permissions))
|
if (PW_PERM_IS_R(permissions))
|
||||||
pw_registry_resource_global_remove(registry, global->id);
|
pw_registry_resource_global_remove(registry, global->id);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -42,12 +42,14 @@ struct pw_protocol_client {
|
||||||
struct pw_remote *remote; /**< the associated remote */
|
struct pw_remote *remote; /**< the associated remote */
|
||||||
|
|
||||||
int (*connect) (struct pw_protocol_client *client);
|
int (*connect) (struct pw_protocol_client *client);
|
||||||
|
int (*get_fd) (struct pw_protocol_client *client);
|
||||||
int (*connect_fd) (struct pw_protocol_client *client, int fd);
|
int (*connect_fd) (struct pw_protocol_client *client, int fd);
|
||||||
void (*disconnect) (struct pw_protocol_client *client);
|
void (*disconnect) (struct pw_protocol_client *client);
|
||||||
void (*destroy) (struct pw_protocol_client *client);
|
void (*destroy) (struct pw_protocol_client *client);
|
||||||
};
|
};
|
||||||
|
|
||||||
#define pw_protocol_client_connect(c) ((c)->connect(c))
|
#define pw_protocol_client_connect(c) ((c)->connect(c))
|
||||||
|
#define pw_protocol_client_get_fd(c) ((c)->get_fd(c))
|
||||||
#define pw_protocol_client_connect_fd(c,fd) ((c)->connect_fd(c,fd))
|
#define pw_protocol_client_connect_fd(c,fd) ((c)->connect_fd(c,fd))
|
||||||
#define pw_protocol_client_disconnect(c) ((c)->disconnect(c))
|
#define pw_protocol_client_disconnect(c) ((c)->disconnect(c))
|
||||||
#define pw_protocol_client_destroy(c) ((c)->destroy(c))
|
#define pw_protocol_client_destroy(c) ((c)->destroy(c))
|
||||||
|
|
|
||||||
|
|
@ -404,6 +404,11 @@ int pw_remote_connect_fd(struct pw_remote *remote, int fd)
|
||||||
return do_connect(remote);
|
return do_connect(remote);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int pw_remote_get_fd(struct pw_remote *remote)
|
||||||
|
{
|
||||||
|
return pw_protocol_client_get_fd(remote->conn);
|
||||||
|
}
|
||||||
|
|
||||||
int pw_remote_disconnect(struct pw_remote *remote)
|
int pw_remote_disconnect(struct pw_remote *remote)
|
||||||
{
|
{
|
||||||
struct pw_proxy *proxy, *t2;
|
struct pw_proxy *proxy, *t2;
|
||||||
|
|
|
||||||
|
|
@ -178,6 +178,9 @@ int pw_remote_connect(struct pw_remote *remote);
|
||||||
* \return 0 on success, < 0 on error */
|
* \return 0 on success, < 0 on error */
|
||||||
int pw_remote_connect_fd(struct pw_remote *remote, int fd);
|
int pw_remote_connect_fd(struct pw_remote *remote, int fd);
|
||||||
|
|
||||||
|
/** Get the fd of the remote connection or < 0 on error */
|
||||||
|
int pw_remote_get_fd(struct pw_remote *remote);
|
||||||
|
|
||||||
/** Get the core proxy, can only be called when connected */
|
/** Get the core proxy, can only be called when connected */
|
||||||
struct pw_core_proxy * pw_remote_get_core_proxy(struct pw_remote *remote);
|
struct pw_core_proxy * pw_remote_get_core_proxy(struct pw_remote *remote);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue