port: Implement max-peers property

Make a property to limit the number of peers on a port. By default we can
link an output port multiple times (with the same format) but we can only
link to an input port once (else we would have to do mixing).
Use a pointer array to keep track of peers
This commit is contained in:
Wim Taymans 2016-06-30 11:10:55 +02:00
parent 830197f8e6
commit e7e141a31d
5 changed files with 97 additions and 67 deletions

View file

@ -291,11 +291,11 @@ static void
on_linked (PinosPort *port, PinosPort *peer, gpointer user_data)
{
PinosNode *node = user_data;
gint n_peers;
guint n_peers;
g_debug ("port %p: linked", port);
n_peers = pinos_port_get_n_links (port);
pinos_port_get_links (port, &n_peers);
if (n_peers == 1)
pinos_node_report_busy (node);
}
@ -304,10 +304,10 @@ static void
on_unlinked (PinosPort *port, PinosPort *peer, gpointer user_data)
{
PinosNode *node = user_data;
gint n_peers;
guint n_peers;
g_debug ("port %p: unlinked", port);
n_peers = pinos_port_get_n_links (port);
pinos_port_get_links (port, &n_peers);
if (n_peers == 0)
pinos_node_report_idle (node);
}

View file

@ -345,9 +345,9 @@ static void
on_linked (PinosPort *port, PinosPort *peer, gpointer user_data)
{
PinosNode *node = user_data;
gint n_peers;
guint n_peers;
n_peers = pinos_port_get_n_links (port);
pinos_port_get_links (port, &n_peers);
if (n_peers == 1)
pinos_node_report_busy (node);
}
@ -356,9 +356,9 @@ static void
on_unlinked (PinosPort *port, PinosPort *peer, gpointer user_data)
{
PinosNode *node = user_data;
gint n_peers;
guint n_peers;
n_peers = pinos_port_get_n_links (port);
pinos_port_get_links (port, &n_peers);
if (n_peers == 0)
pinos_node_report_idle (node);
}