mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-12-16 08:56:45 -05: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;
|
jack_latency_range_t playback_latency;
|
||||||
int32_t priority;
|
int32_t priority;
|
||||||
struct port *port;
|
struct port *port;
|
||||||
|
bool is_monitor;
|
||||||
} port;
|
} port;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -2128,6 +2129,7 @@ static void registry_event_global(void *data, uint32_t id,
|
||||||
jack_port_type_id_t type_id;
|
jack_port_type_id_t type_id;
|
||||||
uint32_t node_id;
|
uint32_t node_id;
|
||||||
char full_name[1024];
|
char full_name[1024];
|
||||||
|
bool is_monitor = false;
|
||||||
|
|
||||||
object_type = INTERFACE_Port;
|
object_type = INTERFACE_Port;
|
||||||
if ((str = spa_dict_lookup(props, PW_KEY_FORMAT_DSP)) == NULL)
|
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))
|
if (pw_properties_parse_bool(item->value))
|
||||||
type_id = TYPE_ID_MIDI;
|
type_id = TYPE_ID_MIDI;
|
||||||
}
|
}
|
||||||
|
else if (!strcmp(item->key, PW_KEY_PORT_MONITOR)) {
|
||||||
|
is_monitor = pw_properties_parse_bool(item->value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
o = NULL;
|
o = NULL;
|
||||||
|
|
@ -2202,6 +2207,7 @@ static void registry_event_global(void *data, uint32_t id,
|
||||||
o->port.flags = flags;
|
o->port.flags = flags;
|
||||||
o->port.type_id = type_id;
|
o->port.type_id = type_id;
|
||||||
o->port.node_id = node_id;
|
o->port.node_id = node_id;
|
||||||
|
o->port.is_monitor = is_monitor;
|
||||||
|
|
||||||
op = find_port(c, o->port.name);
|
op = find_port(c, o->port.name);
|
||||||
if (op != NULL && op != o)
|
if (op != NULL && op != o)
|
||||||
|
|
@ -4165,9 +4171,10 @@ static int port_compare_func(const void *v1, const void *v2)
|
||||||
int res;
|
int res;
|
||||||
bool is_cap1, is_cap2, is_def1 = false, is_def2 = false;
|
bool is_cap1, is_cap2, is_def1 = false, is_def2 = false;
|
||||||
|
|
||||||
is_cap1 = ((*o1)->port.flags & JackPortIsOutput) == JackPortIsOutput;
|
is_cap1 = ((*o1)->port.flags & JackPortIsOutput) == JackPortIsOutput &&
|
||||||
is_cap2 = ((*o2)->port.flags & JackPortIsOutput) == JackPortIsOutput;
|
!(*o1)->port.is_monitor;
|
||||||
|
is_cap2 = ((*o2)->port.flags & JackPortIsOutput) == JackPortIsOutput &&
|
||||||
|
!(*o2)->port.is_monitor;
|
||||||
|
|
||||||
if (c->metadata) {
|
if (c->metadata) {
|
||||||
if (is_cap1)
|
if (is_cap1)
|
||||||
|
|
|
||||||
|
|
@ -834,6 +834,7 @@ int pw_impl_port_register(struct pw_impl_port *port,
|
||||||
PW_KEY_AUDIO_CHANNEL,
|
PW_KEY_AUDIO_CHANNEL,
|
||||||
PW_KEY_PORT_NAME,
|
PW_KEY_PORT_NAME,
|
||||||
PW_KEY_PORT_DIRECTION,
|
PW_KEY_PORT_DIRECTION,
|
||||||
|
PW_KEY_PORT_MONITOR,
|
||||||
PW_KEY_PORT_PHYSICAL,
|
PW_KEY_PORT_PHYSICAL,
|
||||||
PW_KEY_PORT_TERMINAL,
|
PW_KEY_PORT_TERMINAL,
|
||||||
PW_KEY_PORT_CONTROL,
|
PW_KEY_PORT_CONTROL,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue