From 5b01a2e738bfdc89727c2b0133ae7e44ea4341cd Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Sat, 2 Apr 2022 09:42:22 +0200 Subject: [PATCH] jack: fix port sort When the nodes are equal, sort playback ports befor monitor ports. Then sort by system-id (port-id) and then by serial number. See #2260 --- pipewire-jack/src/pipewire-jack.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pipewire-jack/src/pipewire-jack.c b/pipewire-jack/src/pipewire-jack.c index 621074b40..0846a2f22 100644 --- a/pipewire-jack/src/pipewire-jack.c +++ b/pipewire-jack/src/pipewire-jack.c @@ -5411,14 +5411,14 @@ static int port_compare_func(const void *v1, const void *v2) res = is_def2 - is_def1; else if ((*o1)->port.priority != (*o2)->port.priority) res = (*o2)->port.priority - (*o1)->port.priority; - else if ((res = (*o1)->port.node_id - (*o2)->port.node_id)) { + else if ((res = (*o1)->port.node_id - (*o2)->port.node_id) == 0) { + if ((*o1)->port.is_monitor != (*o2)->port.is_monitor) + res = (*o1)->port.is_monitor - (*o2)->port.is_monitor; if (res == 0) res = (*o1)->port.system_id - (*o2)->port.system_id; if (res == 0) res = (*o1)->serial - (*o2)->serial; } - - pw_log_debug("port %s<->%s type:%d<->%d def:%d<->%d prio:%d<->%d id:%d<->%d res:%d", (*o1)->port.name, (*o2)->port.name, (*o1)->port.type_id, (*o2)->port.type_id,