mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-29 05:40:27 -04:00
jack: move monitor ports after playback ports
Enumerate monitor ports after their playback ports, like how jack does this. See #527
This commit is contained in:
parent
0d6ba3a032
commit
c430b1de58
2 changed files with 11 additions and 3 deletions
|
|
@ -129,6 +129,7 @@ struct object {
|
|||
jack_latency_range_t playback_latency;
|
||||
int32_t priority;
|
||||
struct port *port;
|
||||
bool is_monitor;
|
||||
} port;
|
||||
};
|
||||
};
|
||||
|
|
@ -2128,6 +2129,7 @@ static void registry_event_global(void *data, uint32_t id,
|
|||
jack_port_type_id_t type_id;
|
||||
uint32_t node_id;
|
||||
char full_name[1024];
|
||||
bool is_monitor = false;
|
||||
|
||||
object_type = INTERFACE_Port;
|
||||
if ((str = spa_dict_lookup(props, PW_KEY_FORMAT_DSP)) == NULL)
|
||||
|
|
@ -2162,6 +2164,9 @@ static void registry_event_global(void *data, uint32_t id,
|
|||
if (pw_properties_parse_bool(item->value))
|
||||
type_id = TYPE_ID_MIDI;
|
||||
}
|
||||
else if (!strcmp(item->key, PW_KEY_PORT_MONITOR)) {
|
||||
is_monitor = pw_properties_parse_bool(item->value);
|
||||
}
|
||||
}
|
||||
|
||||
o = NULL;
|
||||
|
|
@ -2202,6 +2207,7 @@ static void registry_event_global(void *data, uint32_t id,
|
|||
o->port.flags = flags;
|
||||
o->port.type_id = type_id;
|
||||
o->port.node_id = node_id;
|
||||
o->port.is_monitor = is_monitor;
|
||||
|
||||
op = find_port(c, o->port.name);
|
||||
if (op != NULL && op != o)
|
||||
|
|
@ -4165,9 +4171,10 @@ static int port_compare_func(const void *v1, const void *v2)
|
|||
int res;
|
||||
bool is_cap1, is_cap2, is_def1 = false, is_def2 = false;
|
||||
|
||||
is_cap1 = ((*o1)->port.flags & JackPortIsOutput) == JackPortIsOutput;
|
||||
is_cap2 = ((*o2)->port.flags & JackPortIsOutput) == JackPortIsOutput;
|
||||
|
||||
is_cap1 = ((*o1)->port.flags & JackPortIsOutput) == JackPortIsOutput &&
|
||||
!(*o1)->port.is_monitor;
|
||||
is_cap2 = ((*o2)->port.flags & JackPortIsOutput) == JackPortIsOutput &&
|
||||
!(*o2)->port.is_monitor;
|
||||
|
||||
if (c->metadata) {
|
||||
if (is_cap1)
|
||||
|
|
|
|||
|
|
@ -834,6 +834,7 @@ int pw_impl_port_register(struct pw_impl_port *port,
|
|||
PW_KEY_AUDIO_CHANNEL,
|
||||
PW_KEY_PORT_NAME,
|
||||
PW_KEY_PORT_DIRECTION,
|
||||
PW_KEY_PORT_MONITOR,
|
||||
PW_KEY_PORT_PHYSICAL,
|
||||
PW_KEY_PORT_TERMINAL,
|
||||
PW_KEY_PORT_CONTROL,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue