pulse-server: fix name when moved to monitor

When a stream is moved to a monitor, make sure we append the .monitor
suffix to the node name.

Fixes #2440
This commit is contained in:
Wim Taymans 2022-06-13 19:54:35 +02:00
parent 5dc4434dc7
commit f88134232d

View file

@ -748,13 +748,12 @@ static int reply_create_record_stream(struct stream *stream, struct pw_manager_o
peer = find_linked(manager, peer->id, PW_DIRECTION_OUTPUT); peer = find_linked(manager, peer->id, PW_DIRECTION_OUTPUT);
if (peer && pw_manager_object_is_source_or_monitor(peer)) { if (peer && pw_manager_object_is_source_or_monitor(peer)) {
name = pw_properties_get(peer->props, PW_KEY_NODE_NAME); name = pw_properties_get(peer->props, PW_KEY_NODE_NAME);
peer_index = peer->index;
if (!pw_manager_object_is_source(peer)) { if (!pw_manager_object_is_source(peer)) {
size_t len = (name ? strlen(name) : 5) + 10; size_t len = (name ? strlen(name) : 5) + 10;
peer_index = peer->index;
peer_name = tmp = alloca(len); peer_name = tmp = alloca(len);
snprintf(tmp, len, "%s.monitor", name ? name : "sink"); snprintf(tmp, len, "%s.monitor", name ? name : "sink");
} else { } else {
peer_index = peer->index;
peer_name = name; peer_name = name;
} }
} else { } else {
@ -849,6 +848,12 @@ static void manager_added(void *data, struct pw_manager_object *o)
s->peer_index = peer->index; s->peer_index = peer->index;
peer_name = pw_properties_get(peer->props, PW_KEY_NODE_NAME); peer_name = pw_properties_get(peer->props, PW_KEY_NODE_NAME);
if (peer_name && pw_manager_object_is_monitor(peer)) {
int len = strlen(peer_name) + 10;
char *tmp = alloca(len);
snprintf(tmp, len, "%s.monitor", peer_name);
peer_name = tmp;
}
if (peer_name != NULL) if (peer_name != NULL)
stream_send_moved(s, peer->index, peer_name); stream_send_moved(s, peer->index, peer_name);
} }