node: add PortsChanged event

Add the PortChanged event and make it rescan the node ports.
This commit is contained in:
Wim Taymans 2018-10-02 17:35:54 +02:00
parent 8efabe051e
commit 1ef1563591
3 changed files with 11 additions and 0 deletions

View file

@ -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)

View file

@ -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, },
};

View file

@ -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)