diff --git a/pipewire-jack/src/pipewire-jack.c b/pipewire-jack/src/pipewire-jack.c index 650e73049..98eede7de 100644 --- a/pipewire-jack/src/pipewire-jack.c +++ b/pipewire-jack/src/pipewire-jack.c @@ -3389,6 +3389,8 @@ jack_client_t * jack_client_open (const char *client_name, pw_properties_set(client->props, PW_KEY_NODE_LATENCY, str); if ((str = getenv("PIPEWIRE_RATE")) != NULL) pw_properties_set(client->props, PW_KEY_NODE_RATE, str); + if ((str = getenv("PIPEWIRE_LINK_PASSIVE")) != NULL) + pw_properties_set(client->props, PW_KEY_NODE_PASSIVE, str); if ((str = pw_properties_get(client->props, PW_KEY_NODE_LATENCY)) != NULL) { uint32_t num, denom; @@ -5172,7 +5174,7 @@ int jack_connect (jack_client_t *client, items[props.n_items++] = SPA_DICT_ITEM_INIT(PW_KEY_LINK_INPUT_NODE, val[2]); items[props.n_items++] = SPA_DICT_ITEM_INIT(PW_KEY_LINK_INPUT_PORT, val[3]); items[props.n_items++] = SPA_DICT_ITEM_INIT(PW_KEY_OBJECT_LINGER, "true"); - if ((str = getenv("PIPEWIRE_LINK_PASSIVE")) != NULL && + if ((str = pw_properties_get(c->props, PW_KEY_NODE_PASSIVE)) != NULL && pw_properties_parse_bool(str)) items[props.n_items++] = SPA_DICT_ITEM_INIT(PW_KEY_LINK_PASSIVE, "true"); diff --git a/src/daemon/jack.conf.in b/src/daemon/jack.conf.in index 4c7a34f41..f1fa6bc6b 100644 --- a/src/daemon/jack.conf.in +++ b/src/daemon/jack.conf.in @@ -104,15 +104,22 @@ jack.rules = [ } } } - { - matches = [ - { - application.process.binary = "jack_bufsize" - } + { matches = [ + { application.process.binary = "jack_bufsize" } ] actions = { update-props = { - jack.global-buffer-size = true + jack.global-buffer-size = true # quantum set globally using metadata + } + } + } + { matches = [ + { application.process.binary = "qsynth" } + ] + actions = { + update-props = { + node.pause-on-idle = false # makes audio fade out when idle + node.passive = true # makes the sink and qsynth suspend } } }