switch-on-connect: Do not ignore HDMI sinks
authorJoão Paulo Rechi Vita <jprvita@gmail.com>
Wed, 8 Aug 2018 05:00:52 +0000 (22:00 -0700)
committerTanu Kaskinen <tanuk@iki.fi>
Thu, 22 Nov 2018 09:26:42 +0000 (11:26 +0200)
HDMI ports are normally present on cards connected to an internal bus,
and module-switch-on-connect should switch to them when a HDMI monitor
is plugged.

This is specially relevant on setups where the HDMI port of a machine is
connected to a different audio card then the analog outputs, which is
the case for machines with AMD graphics cards.

src/modules/module-switch-on-connect.c

index ebdd6aad07bfae224e41a0864cb1a28f448ae5c4..9077eaec4840d5f84d031b6dad4cacdf946015f5 100644 (file)
@@ -70,11 +70,14 @@ static pa_hook_result_t sink_put_hook_callback(pa_core *c, pa_sink *sink, void*
 
     pa_log_debug("Trying to switch to new sink %s", sink->name);
 
-    /* Don't switch to any internal devices */
-    s = pa_proplist_gets(sink->proplist, PA_PROP_DEVICE_BUS);
-    if (pa_safe_streq(s, "pci") || pa_safe_streq(s, "isa")) {
-        pa_log_debug("Refusing to switch to sink on %s bus", s);
-        return PA_HOOK_OK;
+    /* Don't switch to any internal devices except HDMI */
+    s = pa_proplist_gets(sink->proplist, PA_PROP_DEVICE_STRING);
+    if (s && !pa_startswith(s, "hdmi")) {
+        s = pa_proplist_gets(sink->proplist, PA_PROP_DEVICE_BUS);
+        if (pa_safe_streq(s, "pci") || pa_safe_streq(s, "isa")) {
+            pa_log_debug("Refusing to switch to sink on %s bus", s);
+            return PA_HOOK_OK;
+        }
     }
 
     /* Ignore virtual sinks if not configured otherwise on the command line */