impl-node: only copy relevant fields from target

We can't copy the link or active state.
This commit is contained in:
Wim Taymans 2023-05-24 14:35:47 +02:00
parent 894eeae03c
commit 2994c48702
3 changed files with 12 additions and 2 deletions

View file

@ -70,7 +70,7 @@ static struct pw_node_peer *pw_node_peer_ref(struct pw_impl_node *onode, struct
peer->ref = 1;
peer->output = onode;
peer->active_count = 0;
peer->target = inode->rt.target;
copy_target(&peer->target, &inode->rt.target);
spa_list_append(&onode->peer_list, &peer->link);
pw_log_debug("new peer %p from %p to %p", peer, onode, inode);

View file

@ -98,7 +98,7 @@ static void add_node(struct pw_impl_node *this, struct pw_impl_node *driver)
}
/* trigger the driver when we complete */
this->rt.driver_target = driver->rt.target;
copy_target(&this->rt.driver_target, &driver->rt.target);
spa_list_append(&this->rt.target_list, &this->rt.driver_target.link);
/* now increment the required states of all this node targets, including

View file

@ -600,6 +600,16 @@ struct pw_node_target {
unsigned int active:1;
};
static inline void copy_target(struct pw_node_target *dst, const struct pw_node_target *src)
{
dst->id = src->id;
memcpy(dst->name, src->name, sizeof(dst->name));
dst->node = src->node;
dst->activation = src->activation;
dst->system = src->system;
dst->fd = src->fd;
}
struct pw_node_activation {
#define PW_NODE_ACTIVATION_NOT_TRIGGERED 0
#define PW_NODE_ACTIVATION_TRIGGERED 1