pipewire/pipewire-jack
Nedko Arnaudov b0065bfe9a pipewire-jack: emit foreign port registration callbacks on jack_activate
The jack_activate loop was only queuing NOTIFY_TYPE_PORTREGISTRATION
for the activating client's own ports. Ports belonging to other clients
— including all WirePlumber-managed ports and MIDI ports — were silently
skipped due to the o->port.port->client != c condition.

This caused two observable bugs for clients using libjackserver (e.g.
jackdbus):
- JackPortRegistrationCallback was not fired for any pre-existing
  foreign ports at activate time, leaving the patchbay empty unless
  the session manager happened to start after the client.
- JACK MIDI ports were never announced via callback, even though they
  are correctly returned by jack_get_ports().

The graph_order_callback fallback (used by jackdbus for initial port
enumeration) is also ineffective here because pipewire-jack only fires
it on connection events, not on activate.

Fix by iterating all non-removed foreign ports in the object list and
queuing registration callbacks for those whose node is active, matching
the semantics already implemented in node_info() for ports of nodes
that transition to running state after activate.
2026-03-12 09:55:07 +01:00
..
examples pipewire-jack: examples: video-dsp-play: add missing includes 2025-02-02 14:25:08 +01:00
jack jack: use a new JackPortIsMIDI2 flag 2025-01-27 13:05:21 +01:00
src pipewire-jack: emit foreign port registration callbacks on jack_activate 2026-03-12 09:55:07 +01:00
meson.build [Meson] Change jack-devel option to be boolean 2021-08-06 07:56:16 +00:00