Blob Blame History Raw
diff -rupN aldrin.old/src/components/driver.py aldrin/src/components/driver.py
--- aldrin.old/src/components/driver.py	2009-01-09 16:25:22.000000000 -0500
+++ aldrin/src/components/driver.py	2010-03-06 04:32:27.000000000 -0500
@@ -155,22 +155,33 @@ class AudioDriver:
 				
 		# second round: if we didnt find them from the config,
 		# pick good alternatives.
+
+		# regardless of what was chosen as input, if output
+		# has an input as well, prefer that one first.
+		# We also prefer the first device since it is usually the
+		# default system device. Unfortunately, the armstrong api
+		# does not provide us a default value.
+		if (output == -1 and input == -1):
+			for i in range(self.driver.get_count()):
+				if (self.driver.is_output(i) and self.driver.is_input(i)):
+					output = i
+					input = i
+					break
 		
 		if output == -1:
 			for i in range(self.driver.get_count()):
 				if self.driver.is_output(i):
 					output = i
-		
-		# regardless of what was chosen as input, if output
-		# has an input as well, prefer that one first.
-		if self.driver.is_input(output):
-			input = output
+					break
 		
 		# take output channel if it supports input		
 		if input == -1:
 			for i in range(self.driver.get_count()):
 				if self.driver.is_input(i):
 					input = i
+					break
+			if self.driver.is_input(output):
+				input = output
 			
 		if output == -1:
 			raise self.AudioInitException