This goes against how all standard jack clients work, a new jack client should not auto-connect at all unless explicitly configured to as if there is an existing audio diagram configured (which is 99% of the time) it will cause unexpected/undesired behavior.

Jack is not supposed to be an 'automatic' system, it's the responsibility of the patch bay software to route connections.

The auto-connect feature exists to allow the jack audiodev to re-connect a broken connection when the jack device restarts/reconnects.

On 2021-02-25 06:39, Christian Schoenebeck wrote:
On Mittwoch, 24. Februar 2021 20:19:27 CET José Pekkarinen wrote:
This patch provides a default value to connect
jack ports when the user don't specify connect-ports.

Buglink: https://bugs.launchpad.net/qemu/+bug/1908832

Signed-off-by: José Pekkarinen <koali...@gmail.com>
---
 audio/jackaudio.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/audio/jackaudio.c b/audio/jackaudio.c
index 3031c4e29b..0a87d5e23a 100644
--- a/audio/jackaudio.c
+++ b/audio/jackaudio.c
@@ -369,14 +369,23 @@ static size_t qjack_read(HWVoiceIn *hw, void *buf,
size_t len)

 static void qjack_client_connect_ports(QJackClient *c)
 {
-    if (!c->connect_ports || !c->opt->connect_ports) {
+    if (!c->connect_ports) {
         return;
     }

     c->connect_ports = false;
     const char **ports;
-    ports = jack_get_ports(c->client, c->opt->connect_ports, NULL,
-        c->out ? JackPortIsInput : JackPortIsOutput);
+    if (c->out) {
+        ports = jack_get_ports(c->client,
+            c->opt->connect_ports ? c->opt->connect_ports
+                : "system:playback_.*",
+            NULL, JackPortIsInput);
+    } else {
+        ports = jack_get_ports(c->client,
+            c->opt->connect_ports ? c->opt->connect_ports
+                : "system:capture_.*",
+            NULL, JackPortIsOutput);
+    }

     if (!ports) {
         return;

Looks fine to me now.

Reviewed-by: Christian Schoenebeck <qemu_...@crudebyte.com>

Thanks José!

Best regards,
Christian Schoenebeck

Reply via email to