From da941b8c6cea706f8d7623d3fb9c099e248f79a9 Mon Sep 17 00:00:00 2001 From: Themaister Date: Mon, 7 May 2012 23:57:39 +0200 Subject: [PATCH] Do not start audio driver out of the blue. --- console/console_ext.c | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/console/console_ext.c b/console/console_ext.c index 618e4b8259..9170fc56d2 100644 --- a/console/console_ext.c +++ b/console/console_ext.c @@ -714,19 +714,33 @@ void rarch_exec (void) #ifdef HAVE_RSOUND bool rarch_console_rsound_start(const char *ip) { - uninit_audio(); + strlcpy(g_settings.audio.driver, "rsound", sizeof(g_settings.audio.driver)); strlcpy(g_settings.audio.device, ip, sizeof(g_settings.audio.device)); - driver.audio = &audio_rsound; driver.audio_data = NULL; - init_audio(); + + // If driver already has started, it must be reinited. + if (driver.audio_data) + { + uninit_audio(); + driver.audio_data = NULL; + init_drivers_pre(); + init_audio(); + } return g_extern.audio_active; } void rarch_console_rsound_stop(void) { - uninit_audio(); - init_drivers_pre(); - init_audio(); + strlcpy(g_settings.audio.driver, config_get_default_audio(), sizeof(g_settings.audio.driver)); + + // If driver already has started, it must be reinited. + if (driver.audio_data) + { + uninit_audio(); + driver.audio_data = NULL; + init_drivers_pre(); + init_audio(); + } } #endif