[PATCH 3/3] core: prefer available devices during default source/sink selection

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

 



Because ports with disabled jack detection are set to availability
unknown by default, available ports should be preferred over ports
with unknown availability.
---
 src/pulsecore/core.c | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/src/pulsecore/core.c b/src/pulsecore/core.c
index acd47cbb..8c074afe 100644
--- a/src/pulsecore/core.c
+++ b/src/pulsecore/core.c
@@ -325,7 +325,15 @@ static int compare_sinks(pa_sink *a, pa_sink *b) {
 
     core = a->core;
 
-    /* Available sinks always beat unavailable sinks. */
+    /* Available sinks always beat sinks with unknown availability. */
+    if ((!a->active_port || a->active_port->available <= PA_AVAILABLE_UNKNOWN)
+            && b->active_port && b->active_port->available == PA_AVAILABLE_YES)
+        return -1;
+    if ((!b->active_port || b->active_port->available <= PA_AVAILABLE_UNKNOWN)
+            && a->active_port && a->active_port->available == PA_AVAILABLE_YES)
+        return 1;
+
+    /* Possibly available sinks always beat unavailable sinks. */
     if (a->active_port && a->active_port->available == PA_AVAILABLE_NO
             && (!b->active_port || b->active_port->available != PA_AVAILABLE_NO))
         return -1;
@@ -402,7 +410,15 @@ static int compare_sources(pa_source *a, pa_source *b) {
 
     core = a->core;
 
-    /* Available sources always beat unavailable sources. */
+    /* Available sources always beat sources with unknown availability. */
+    if ((!a->active_port || a->active_port->available <= PA_AVAILABLE_UNKNOWN)
+            && b->active_port && b->active_port->available == PA_AVAILABLE_YES)
+        return -1;
+    if ((!b->active_port || b->active_port->available <= PA_AVAILABLE_UNKNOWN)
+            && a->active_port && a->active_port->available == PA_AVAILABLE_YES)
+        return 1;
+
+    /* Possibly available sources always beat unavailable sources. */
     if (a->active_port && a->active_port->available == PA_AVAILABLE_NO
             && (!b->active_port || b->active_port->available != PA_AVAILABLE_NO))
         return -1;
-- 
2.14.1



[Index of Archives]     [Linux Audio Users]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux