From 2994c4870242e70ed87dca8d96457b8f2efb7e5c Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 24 May 2023 14:35:47 +0200 Subject: [PATCH] impl-node: only copy relevant fields from target We can't copy the link or active state. --- src/pipewire/impl-link.c | 2 +- src/pipewire/impl-node.c | 2 +- src/pipewire/private.h | 10 ++++++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/pipewire/impl-link.c b/src/pipewire/impl-link.c index df4590d31..d2eabd8df 100644 --- a/src/pipewire/impl-link.c +++ b/src/pipewire/impl-link.c @@ -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); diff --git a/src/pipewire/impl-node.c b/src/pipewire/impl-node.c index 78e031962..2c27dfaef 100644 --- a/src/pipewire/impl-node.c +++ b/src/pipewire/impl-node.c @@ -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 diff --git a/src/pipewire/private.h b/src/pipewire/private.h index d0a3b983c..265e1cb43 100644 --- a/src/pipewire/private.h +++ b/src/pipewire/private.h @@ -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