mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2026-04-08 08:21:04 -04:00
port: debug passive modes better
This commit is contained in:
parent
7012594926
commit
446e36807f
3 changed files with 31 additions and 9 deletions
|
|
@ -194,12 +194,16 @@ static void make_runnable(struct pw_context *context, struct pw_impl_node *node)
|
|||
*/
|
||||
static inline bool runnable_pair(struct pw_impl_port *a, struct pw_impl_port *b)
|
||||
{
|
||||
bool res = false;
|
||||
if (a->passive_mode == PASSIVE_MODE_FALSE)
|
||||
return true;
|
||||
res = true;
|
||||
if (a->passive_mode == PASSIVE_MODE_FOLLOW_SUSPEND &&
|
||||
b->passive_mode == PASSIVE_MODE_FOLLOW_SUSPEND)
|
||||
return true;
|
||||
return false;
|
||||
res = true;
|
||||
pw_log_trace(" port %p <-> %p: %s <> %s -> %d", a, b,
|
||||
passive_mode_to_string(a->passive_mode),
|
||||
passive_mode_to_string(b->passive_mode), res);
|
||||
return res;
|
||||
}
|
||||
static void check_runnable(struct pw_context *context, struct pw_impl_node *node)
|
||||
{
|
||||
|
|
@ -218,8 +222,8 @@ static void check_runnable(struct pw_context *context, struct pw_impl_node *node
|
|||
n = l->input->node;
|
||||
/* the peer needs to be active and we are linked to it
|
||||
* with a non-passive link */
|
||||
pw_log_trace(" out-port %p: link %p passive:%d prepared:%d active:%d", p,
|
||||
l, p->passive_mode, l->prepared, n->active);
|
||||
pw_log_trace(" out-port %p: link %p prepared:%d active:%d", p,
|
||||
l, l->prepared, n->active);
|
||||
if (!n->active || !runnable_pair(p, l->input))
|
||||
continue;
|
||||
/* explicitly prepare the link in case it was suspended */
|
||||
|
|
@ -233,8 +237,8 @@ static void check_runnable(struct pw_context *context, struct pw_impl_node *node
|
|||
spa_list_for_each(p, &node->input_ports, link) {
|
||||
spa_list_for_each(l, &p->links, input_link) {
|
||||
n = l->output->node;
|
||||
pw_log_trace(" in-port %p: link %p passive:%d prepared:%d active:%d", p,
|
||||
l, p->passive_mode, l->prepared, n->active);
|
||||
pw_log_trace(" in-port %p: link %p prepared:%d active:%d", p,
|
||||
l, l->prepared, n->active);
|
||||
if (!n->active || !runnable_pair(p, l->output))
|
||||
continue;
|
||||
pw_impl_link_prepare(l);
|
||||
|
|
|
|||
|
|
@ -1346,8 +1346,10 @@ static void check_properties(struct pw_impl_node *node)
|
|||
recalc_reason = "force rate changed";
|
||||
}
|
||||
|
||||
pw_log_debug("%p: driver:%d recalc:%s active:%d passive:%d:%d", node, node->driver,
|
||||
recalc_reason, node->active, node->passive_mode[0], node->passive_mode[1]);
|
||||
pw_log_debug("%p: driver:%d recalc:%s active:%d passive:%s:%s", node, node->driver,
|
||||
recalc_reason, node->active,
|
||||
passive_mode_to_string(node->passive_mode[0]),
|
||||
passive_mode_to_string(node->passive_mode[1]));
|
||||
|
||||
if (recalc_reason != NULL && node->active)
|
||||
pw_context_recalc_graph(context, recalc_reason);
|
||||
|
|
|
|||
|
|
@ -989,6 +989,22 @@ struct pw_impl_port {
|
|||
void *user_data; /**< extra user data */
|
||||
};
|
||||
|
||||
static inline const char* passive_mode_to_string(uint32_t passive_mode)
|
||||
{
|
||||
switch (passive_mode) {
|
||||
case PASSIVE_MODE_FALSE:
|
||||
return "false";
|
||||
case PASSIVE_MODE_TRUE:
|
||||
return "true";
|
||||
case PASSIVE_MODE_FOLLOW:
|
||||
return "follow";
|
||||
case PASSIVE_MODE_FOLLOW_SUSPEND:
|
||||
return "follow";
|
||||
default:
|
||||
return "unknown";
|
||||
}
|
||||
}
|
||||
|
||||
struct pw_control_link {
|
||||
struct spa_list out_link;
|
||||
struct spa_list in_link;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue