mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-31 22:25:38 -04:00
media-session: keep track of peer
When we don't link to a session but directly to a peer, remember this so that we don't try to link over and over again.
This commit is contained in:
parent
de031b42b1
commit
d6289639f1
1 changed files with 11 additions and 2 deletions
|
|
@ -115,6 +115,8 @@ struct node {
|
|||
struct spa_list session_link;
|
||||
struct session *session;
|
||||
|
||||
struct node *peer;
|
||||
|
||||
struct session *manager;
|
||||
struct spa_list port_list;
|
||||
|
||||
|
|
@ -739,10 +741,15 @@ registry_global_remove(void *data, uint32_t id)
|
|||
switch (obj->type) {
|
||||
case PW_TYPE_INTERFACE_Node:
|
||||
{
|
||||
struct node *node = (struct node*) obj;
|
||||
struct node *node = (struct node*) obj, *n;
|
||||
if (node->manager)
|
||||
remove_session(impl, node->manager);
|
||||
node->manager = NULL;
|
||||
|
||||
spa_list_for_each(n, &impl->node_list, l) {
|
||||
if (n->peer == node)
|
||||
n->peer = NULL;
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
|
@ -862,6 +869,8 @@ static int link_nodes(struct node *peer, enum pw_direction direction, struct nod
|
|||
|
||||
pw_properties_free(props);
|
||||
}
|
||||
node->peer = peer;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -899,7 +908,7 @@ static int rescan_node(struct impl *impl, struct node *node)
|
|||
if (node->type == NODE_TYPE_DEVICE)
|
||||
return 0;
|
||||
|
||||
if (node->session != NULL)
|
||||
if (node->session != NULL || node->peer != NULL)
|
||||
return 0;
|
||||
|
||||
if (node->info == NULL || node->info->props == NULL) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue