mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-31 22:25:38 -04:00
impl-node: move node_peer functions to impl-node
This commit is contained in:
parent
33f1a713cd
commit
50870aac57
2 changed files with 38 additions and 38 deletions
|
|
@ -52,44 +52,6 @@ struct impl {
|
||||||
|
|
||||||
/** \endcond */
|
/** \endcond */
|
||||||
|
|
||||||
SPA_EXPORT
|
|
||||||
struct pw_node_peer *pw_node_peer_ref(struct pw_impl_node *onode, struct pw_impl_node *inode)
|
|
||||||
{
|
|
||||||
struct pw_node_peer *peer;
|
|
||||||
|
|
||||||
spa_list_for_each(peer, &onode->peer_list, link) {
|
|
||||||
if (peer->target.id == inode->info.id) {
|
|
||||||
pw_log_debug("exiting peer %p from %p to %p", peer, onode, inode);
|
|
||||||
peer->ref++;
|
|
||||||
return peer;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
peer = calloc(1, sizeof(*peer));
|
|
||||||
if (peer == NULL)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
peer->ref = 1;
|
|
||||||
peer->output = onode;
|
|
||||||
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);
|
|
||||||
pw_impl_node_add_target(onode, &peer->target);
|
|
||||||
|
|
||||||
return peer;
|
|
||||||
}
|
|
||||||
|
|
||||||
SPA_EXPORT
|
|
||||||
void pw_node_peer_unref(struct pw_node_peer *peer)
|
|
||||||
{
|
|
||||||
if (peer == NULL || --peer->ref > 0)
|
|
||||||
return;
|
|
||||||
spa_list_remove(&peer->link);
|
|
||||||
pw_log_debug("remove peer %p from %p to %p", peer, peer->output, peer->target.node);
|
|
||||||
pw_impl_node_remove_target(peer->output, &peer->target);
|
|
||||||
free(peer);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void info_changed(struct pw_impl_link *link)
|
static void info_changed(struct pw_impl_link *link)
|
||||||
{
|
{
|
||||||
struct pw_resource *resource;
|
struct pw_resource *resource;
|
||||||
|
|
|
||||||
|
|
@ -70,6 +70,44 @@ struct resource_data {
|
||||||
struct spa_hook listener;
|
struct spa_hook listener;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
SPA_EXPORT
|
||||||
|
struct pw_node_peer *pw_node_peer_ref(struct pw_impl_node *onode, struct pw_impl_node *inode)
|
||||||
|
{
|
||||||
|
struct pw_node_peer *peer;
|
||||||
|
|
||||||
|
spa_list_for_each(peer, &onode->peer_list, link) {
|
||||||
|
if (peer->target.id == inode->info.id) {
|
||||||
|
pw_log_debug("exiting peer %p from %p to %p", peer, onode, inode);
|
||||||
|
peer->ref++;
|
||||||
|
return peer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
peer = calloc(1, sizeof(*peer));
|
||||||
|
if (peer == NULL)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
peer->ref = 1;
|
||||||
|
peer->output = onode;
|
||||||
|
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);
|
||||||
|
pw_impl_node_add_target(onode, &peer->target);
|
||||||
|
|
||||||
|
return peer;
|
||||||
|
}
|
||||||
|
|
||||||
|
SPA_EXPORT
|
||||||
|
void pw_node_peer_unref(struct pw_node_peer *peer)
|
||||||
|
{
|
||||||
|
if (peer == NULL || --peer->ref > 0)
|
||||||
|
return;
|
||||||
|
spa_list_remove(&peer->link);
|
||||||
|
pw_log_debug("remove peer %p from %p to %p", peer, peer->output, peer->target.node);
|
||||||
|
pw_impl_node_remove_target(peer->output, &peer->target);
|
||||||
|
free(peer);
|
||||||
|
}
|
||||||
|
|
||||||
static inline void activate_target(struct pw_impl_node *node, struct pw_node_target *t)
|
static inline void activate_target(struct pw_impl_node *node, struct pw_node_target *t)
|
||||||
{
|
{
|
||||||
struct pw_node_activation_state *state = &t->activation->state[0];
|
struct pw_node_activation_state *state = &t->activation->state[0];
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue