diff -urN snes9x-1.54.1-orig/gtk/src/gtk_config.h snes9x-1.54.1/gtk/src/gtk_config.h
--- snes9x-1.54.1-orig/gtk/src/gtk_config.h 2016-10-15 09:20:34 +0900
+++ snes9x-1.54.1/gtk/src/gtk_config.h 2016-11-12 16:02:57 +0900
@@ -118,6 +118,7 @@
/* Operational */
int sound_driver;
+ char sound_device[1000];
int mute_sound;
int mute_sound_turbo;
int sound_buffer_size;
diff -urN snes9x-1.54.1-orig/gtk/src/gtk_preferences.cpp snes9x-1.54.1/gtk/src/gtk_preferences.cpp
--- snes9x-1.54.1-orig/gtk/src/gtk_preferences.cpp 2016-10-15 09:20:34 +0900
+++ snes9x-1.54.1/gtk/src/gtk_preferences.cpp 2016-11-12 16:02:57 +0900
@@ -688,6 +688,7 @@
config->sound_driver = 0;
set_combo ("sound_driver", config->sound_driver);
+ set_entry_text ("sound_device", config->sound_device);
if (config->scale_method == FILTER_NTSC)
{
@@ -749,6 +750,7 @@
int gfx_needs_restart = 0;
if ((config->sound_driver != get_combo ("sound_driver")) ||
+ strcmp (config->sound_device, get_entry_text ("sound_device")) != 0 ||
(config->mute_sound != get_check ("mute_sound_check")) ||
(config->sound_buffer_size != (int) get_spin ("sound_buffer_size"))||
(Settings.Stereo != get_check ("stereo_check")) ||
@@ -812,6 +814,7 @@
Settings.BlockInvalidVRAMAccessMaster = get_check ("block_invalid_vram_access");
Settings.UpAndDown = get_check ("upanddown");
config->sound_driver = get_combo ("sound_driver");
+ strncpy (config->sound_device, get_entry_text ("sound_device"), 1000);
Settings.Stereo = get_check ("stereo_check");
config->sound_playback_rate = 7 - (get_combo ("playback_combo"));
config->sound_buffer_size = get_spin ("sound_buffer_size");
diff -urN snes9x-1.54.1-orig/gtk/src/gtk_sound_driver_alsa.cpp snes9x-1.54.1/gtk/src/gtk_sound_driver_alsa.cpp
--- snes9x-1.54.1-orig/gtk/src/gtk_sound_driver_alsa.cpp 2016-10-15 09:20:34 +0900
+++ snes9x-1.54.1/gtk/src/gtk_sound_driver_alsa.cpp 2016-11-12 16:03:33 +0900
@@ -64,15 +64,17 @@
bool8
S9xAlsaSoundDriver::open_device (void)
{
+ const char *device =
+ *gui_config->sound_device ? gui_config->sound_device : "default";
int err;
snd_pcm_sw_params_t *sw_params;
snd_pcm_uframes_t alsa_buffer_size, alsa_period_size;
printf ("ALSA sound driver initializing...\n");
- printf (" --> (Device: default)...");
+ printf (" --> (Device: %s)...", device);
err = snd_pcm_open (&pcm,
- "default",
+ device,
SND_PCM_STREAM_PLAYBACK,
SND_PCM_NONBLOCK);
diff -urN snes9x-1.54.1-orig/gtk/src/snes9x.ui snes9x-1.54.1/gtk/src/snes9x.ui
--- snes9x-1.54.1-orig/gtk/src/snes9x.ui 2016-10-15 09:20:34 +0900
+++ snes9x-1.54.1/gtk/src/snes9x.ui 2016-11-12 16:07:30 +0900
@@ -3967,6 +3967,45 @@
+
+
+ False
+ False
+ 1
+
+
+
Synchronize with sound
True
@@ -3978,7 +4017,7 @@
False
False
- 1
+ 2
@@ -3994,7 +4033,7 @@
False
False
- 2
+ 3
@@ -4010,7 +4049,7 @@
False
False
- 3
+ 4
@@ -4026,7 +4065,7 @@
False
False
- 4
+ 5