diff --git a/driver.c b/driver.c index 65df7d086f..1d4bbc3fec 100644 --- a/driver.c +++ b/driver.c @@ -966,14 +966,16 @@ void uninit_drivers(void) driver.input_data_own = false; } -#ifdef HAVE_DYLIB void rarch_init_dsp_filter(void) { + const rarch_dsp_plugin_t* (RARCH_API_CALLTYPE *plugin_init)(void); if (!(*g_settings.audio.dsp_plugin)) return; rarch_dsp_info_t info = {0}; + plugin_init = NULL; +#ifdef HAVE_DYLIB g_extern.audio_data.dsp_lib = dylib_load(g_settings.audio.dsp_plugin); if (!g_extern.audio_data.dsp_lib) { @@ -981,8 +983,8 @@ void rarch_init_dsp_filter(void) return; } - const rarch_dsp_plugin_t* (RARCH_API_CALLTYPE *plugin_init)(void) = - (const rarch_dsp_plugin_t *(RARCH_API_CALLTYPE*)(void))dylib_proc(g_extern.audio_data.dsp_lib, "rarch_dsp_plugin_init"); + plugin_init = (const rarch_dsp_plugin_t *(RARCH_API_CALLTYPE*)(void))dylib_proc(g_extern.audio_data.dsp_lib, "rarch_dsp_plugin_init"); +#endif if (!plugin_init) { @@ -1017,22 +1019,25 @@ void rarch_init_dsp_filter(void) return; error: +#ifdef HAVE_DYLIB if (g_extern.audio_data.dsp_lib) dylib_close(g_extern.audio_data.dsp_lib); - g_extern.audio_data.dsp_plugin = NULL; g_extern.audio_data.dsp_lib = NULL; +#endif + g_extern.audio_data.dsp_plugin = NULL; } void rarch_deinit_dsp_filter(void) { if (g_extern.audio_data.dsp_plugin && g_extern.audio_data.dsp_plugin->free) g_extern.audio_data.dsp_plugin->free(g_extern.audio_data.dsp_handle); +#ifdef HAVE_DYLIB if (g_extern.audio_data.dsp_lib) dylib_close(g_extern.audio_data.dsp_lib); +#endif g_extern.audio_data.dsp_handle = NULL; g_extern.audio_data.dsp_plugin = NULL; } -#endif void init_audio(void) { diff --git a/driver.h b/driver.h index a670a36560..bce5b23bcb 100644 --- a/driver.h +++ b/driver.h @@ -584,9 +584,10 @@ float driver_sensor_get_input(unsigned port, unsigned action); #ifdef HAVE_DYLIB void rarch_deinit_filter(void); void rarch_init_filter(enum retro_pixel_format); +#endif + void rarch_init_dsp_filter(void); void rarch_deinit_dsp_filter(void); -#endif // Used by RETRO_ENVIRONMENT_GET_CAMERA_INTERFACE #ifdef HAVE_CAMERA diff --git a/frontend/menu/backend/menu_common_backend.c b/frontend/menu/backend/menu_common_backend.c index 6017368da4..6a67313a68 100644 --- a/frontend/menu/backend/menu_common_backend.c +++ b/frontend/menu/backend/menu_common_backend.c @@ -337,9 +337,7 @@ static void menu_common_entries_init(void *data, unsigned menu_type) break; case RGUI_SETTINGS_AUDIO_OPTIONS: file_list_clear(rgui->selection_buf); -#ifdef HAVE_DYLIB file_list_push(rgui->selection_buf, "DSP Filter", RGUI_SETTINGS_AUDIO_DSP_FILTER, 0); -#endif file_list_push(rgui->selection_buf, "Mute Audio", RGUI_SETTINGS_AUDIO_MUTE, 0); file_list_push(rgui->selection_buf, "Rate Control Delta", RGUI_SETTINGS_AUDIO_CONTROL_RATE_DELTA, 0); #ifdef __CELLOS_LV2__ @@ -1457,11 +1455,11 @@ static int menu_common_iterate(void *data, unsigned action) } else if (menu_type == RGUI_SETTINGS_AUDIO_DSP_FILTER) { - fill_pathname_join(g_settings.audio.dsp_plugin, dir, path, sizeof(g_settings.audio.dsp_plugin)); #ifdef HAVE_DYLIB + fill_pathname_join(g_settings.audio.dsp_plugin, dir, path, sizeof(g_settings.audio.dsp_plugin)); +#endif rarch_deinit_dsp_filter(); rarch_init_dsp_filter(); -#endif menu_flush_stack_type(rgui, RGUI_SETTINGS_AUDIO_OPTIONS); } else if (menu_type == RGUI_SAVESTATE_DIR_PATH) @@ -2531,11 +2529,11 @@ static int menu_common_setting_set(void *data, unsigned setting, unsigned action rgui->need_refresh = true; break; case RGUI_ACTION_START: - strlcpy(g_settings.audio.dsp_plugin, "", sizeof(g_settings.audio.dsp_plugin)); #ifdef HAVE_DYLIB + strlcpy(g_settings.audio.dsp_plugin, "", sizeof(g_settings.audio.dsp_plugin)); +#endif rarch_deinit_dsp_filter(); rarch_init_dsp_filter(); -#endif break; } break; diff --git a/retroarch.c b/retroarch.c index 806155c501..ce2b696d1f 100644 --- a/retroarch.c +++ b/retroarch.c @@ -386,7 +386,6 @@ static bool audio_flush(const int16_t *data, size_t samples) g_extern.audio_data.volume_gain); RARCH_PERFORMANCE_STOP(audio_convert_s16); -#if defined(HAVE_DYLIB) rarch_dsp_output_t dsp_output = {0}; rarch_dsp_input_t dsp_input = {0}; dsp_input.samples = g_extern.audio_data.data; @@ -397,10 +396,6 @@ static bool audio_flush(const int16_t *data, size_t samples) src_data.data_in = dsp_output.samples ? dsp_output.samples : g_extern.audio_data.data; src_data.input_frames = dsp_output.samples ? dsp_output.frames : (samples >> 1); -#else - src_data.data_in = g_extern.audio_data.data; - src_data.input_frames = samples >> 1; -#endif src_data.data_out = g_extern.audio_data.outsamples; @@ -2566,7 +2561,6 @@ static void check_screenshot(void) } #endif -#ifdef HAVE_DYLIB static void check_dsp_config(void) { if (!g_extern.audio_data.dsp_plugin || !g_extern.audio_data.dsp_plugin->config) @@ -2579,7 +2573,6 @@ static void check_dsp_config(void) old_pressed = pressed; } -#endif static void check_mute(void) { @@ -2758,9 +2751,7 @@ static void do_state_checks(void) check_cheats(); check_disk(); -#ifdef HAVE_DYLIB check_dsp_config(); -#endif check_reset(); #ifdef HAVE_NETPLAY }