diff --git a/spa/include/spa/node/event.h b/spa/include/spa/node/event.h index 0488657c0..51f773a7f 100644 --- a/spa/include/spa/node/event.h +++ b/spa/include/spa/node/event.h @@ -33,6 +33,7 @@ enum spa_node_event { SPA_NODE_EVENT_Error, SPA_NODE_EVENT_Buffering, SPA_NODE_EVENT_RequestRefresh, + SPA_NODE_EVENT_PortsChanged, }; #define SPA_NODE_EVENT_ID(ev) SPA_EVENT_ID(ev, SPA_TYPE_EVENT_Node) diff --git a/spa/include/spa/node/type-info.h b/spa/include/spa/node/type-info.h index 493b09d9b..6cff138c6 100644 --- a/spa/include/spa/node/type-info.h +++ b/spa/include/spa/node/type-info.h @@ -51,6 +51,7 @@ static const struct spa_type_info spa_type_node_event_id[] = { { SPA_NODE_EVENT_Error, SPA_TYPE_NODE_EVENT_BASE "Error", SPA_TYPE_Int, }, { SPA_NODE_EVENT_Buffering, SPA_TYPE_NODE_EVENT_BASE "Buffering", SPA_TYPE_Int, }, { SPA_NODE_EVENT_RequestRefresh, SPA_TYPE_NODE_EVENT_BASE "RequestRefresh", SPA_TYPE_Int, }, + { SPA_NODE_EVENT_PortsChanged, SPA_TYPE_NODE_EVENT_BASE "PortsChanged", SPA_TYPE_Int, }, { 0, NULL, }, }; diff --git a/src/pipewire/node.c b/src/pipewire/node.c index ce4989754..104f121aa 100644 --- a/src/pipewire/node.c +++ b/src/pipewire/node.c @@ -758,6 +758,15 @@ static void node_event(void *data, struct spa_event *event) pw_log_trace("node %p: event %d", node, SPA_EVENT_TYPE(event)); pw_node_events_event(node, event); + + switch (SPA_NODE_EVENT_ID(event)) { + case SPA_NODE_EVENT_PortsChanged: + pw_node_update_ports(node); + break; + default: + break; + } + } static void node_process(void *data, int status)