Clean up error handling a bit.
This commit is contained in:
parent
5ae4235545
commit
4cc17a74f7
24
driver.c
24
driver.c
|
@ -162,33 +162,41 @@ static void init_dsp_plugin(void)
|
||||||
if (!plugin_init)
|
if (!plugin_init)
|
||||||
{
|
{
|
||||||
SSNES_ERR("Failed to find symbol \"ssnes_dsp_plugin_init\" in DSP plugin.\n");
|
SSNES_ERR("Failed to find symbol \"ssnes_dsp_plugin_init\" in DSP plugin.\n");
|
||||||
dylib_close(g_extern.audio_data.dsp_lib);
|
goto error;
|
||||||
g_extern.audio_data.dsp_lib = NULL;
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
g_extern.audio_data.dsp_plugin = plugin_init();
|
g_extern.audio_data.dsp_plugin = plugin_init();
|
||||||
if (!g_extern.audio_data.dsp_plugin)
|
if (!g_extern.audio_data.dsp_plugin)
|
||||||
{
|
{
|
||||||
SSNES_ERR("Failed to get a valid DSP plugin.\n");
|
SSNES_ERR("Failed to get a valid DSP plugin.\n");
|
||||||
dylib_close(g_extern.audio_data.dsp_lib);
|
goto error;
|
||||||
g_extern.audio_data.dsp_lib = NULL;
|
}
|
||||||
return;
|
|
||||||
|
if (g_extern.audio_data.dsp_plugin->api_version != SSNES_API_VERSION)
|
||||||
|
{
|
||||||
|
SSNES_ERR("DSP plugin API mismatch!\n");
|
||||||
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
ssnes_dsp_info_t info = {
|
ssnes_dsp_info_t info = {
|
||||||
.input_rate = g_settings.audio.in_rate,
|
.input_rate = g_settings.audio.in_rate,
|
||||||
.output_rate = g_settings.audio.out_rate
|
.output_rate = g_settings.audio.out_rate
|
||||||
};
|
};
|
||||||
|
|
||||||
g_extern.audio_data.dsp_handle = g_extern.audio_data.dsp_plugin->init(&info);
|
g_extern.audio_data.dsp_handle = g_extern.audio_data.dsp_plugin->init(&info);
|
||||||
if (!g_extern.audio_data.dsp_handle)
|
if (!g_extern.audio_data.dsp_handle)
|
||||||
{
|
{
|
||||||
SSNES_ERR("Failed to init DSP plugin.\n");
|
SSNES_ERR("Failed to init DSP plugin.\n");
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
error:
|
||||||
|
if (g_extern.audio_data.dsp_lib)
|
||||||
dylib_close(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_plugin = NULL;
|
||||||
g_extern.audio_data.dsp_lib = NULL;
|
g_extern.audio_data.dsp_lib = NULL;
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void deinit_dsp_plugin(void)
|
static void deinit_dsp_plugin(void)
|
||||||
|
|
Loading…
Reference in New Issue