about summary refs log tree commit diff
path: root/src/engine
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine')
-rw-r--r--src/engine/client/ec_snd.c18
-rw-r--r--src/engine/e_config_variables.h1
2 files changed, 17 insertions, 2 deletions
diff --git a/src/engine/client/ec_snd.c b/src/engine/client/ec_snd.c
index 89e18cb8..152eac53 100644
--- a/src/engine/client/ec_snd.c
+++ b/src/engine/client/ec_snd.c
@@ -208,7 +208,6 @@ static void mix(short *final_out, unsigned frames)
 			
 		}
 	}
-
 	/* release the lock */
 	lock_release(sound_lock);
 
@@ -249,9 +248,24 @@ int snd_init()
 	
 	mixing_rate = config.snd_rate;
 
-	params.device = Pa_GetDefaultOutputDevice();
+	{
+		int num = Pa_GetDeviceCount();
+		int i;
+		const PaDeviceInfo *info;
+		
+		for(i = 0; i < num; i++)
+		{
+			info = Pa_GetDeviceInfo(i);
+			dbg_msg("snd", "device #%d name='%s'", i, info->name);
+		}
+	}
+
+	params.device = config.snd_device;
+	if(params.device == -1)
+		params.device = Pa_GetDefaultOutputDevice();
 	if(params.device < 0)
 		return 1;
+	dbg_msg("snd", "device = %d", params.device);
 	params.channelCount = 2;
 	params.sampleFormat = paInt16;
 	params.suggestedLatency = Pa_GetDeviceInfo(params.device)->defaultLowOutputLatency;
diff --git a/src/engine/e_config_variables.h b/src/engine/e_config_variables.h
index 51ee7376..1aa6b799 100644
--- a/src/engine/e_config_variables.h
+++ b/src/engine/e_config_variables.h
@@ -22,6 +22,7 @@ MACRO_CONFIG_INT(b_max_requests, 10, 0, 1000)
 MACRO_CONFIG_INT(snd_rate, 48000, 0, 0)
 MACRO_CONFIG_INT(snd_enable, 1, 0, 1)
 MACRO_CONFIG_INT(snd_volume, 100, 0, 100)
+MACRO_CONFIG_INT(snd_device, -1, 0, 0)
 
 MACRO_CONFIG_INT(gfx_screen_width, 800, 0, 0)
 MACRO_CONFIG_INT(gfx_screen_height, 600, 0, 0)