qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2] Autoconnect jack ports by default


From: Geoffrey McRae
Subject: Re: [PATCH v2] Autoconnect jack ports by default
Date: Thu, 25 Feb 2021 09:04:47 +1100
User-agent: Roundcube Webmail/1.3.15

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 <koalinux@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_oss@crudebyte.com>

Thanks José!

Best regards,
Christian Schoenebeck



reply via email to

[Prev in Thread] Current Thread [Next in Thread]