Create CORE_CTL_RETRO_SYMBOLS_INIT

This commit is contained in:
twinaphex 2016-01-28 04:03:02 +01:00
parent eb503e0464
commit 7f81d7a4a8
3 changed files with 13 additions and 5 deletions

View File

@ -410,8 +410,6 @@ static void event_deinit_core(bool reinit)
config_unload_override();
runloop_ctl(RUNLOOP_CTL_UNSET_OVERRIDES_ACTIVE, NULL);
}
uninit_libretro_sym(&core);
}
static void event_init_cheats(void)
@ -573,12 +571,10 @@ static bool event_init_core(void *data)
{
retro_ctx_environ_info_t info;
settings_t *settings = config_get_ptr();
enum rarch_core_type *core_type = (enum rarch_core_type*)data;
if (!core_type)
if (!core_ctl(CORE_CTL_RETRO_SYMBOLS_INIT, data))
return false;
init_libretro_sym(*core_type, &core);
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_INIT, NULL);
/* auto overrides: apply overrides */

View File

@ -174,6 +174,15 @@ bool core_ctl(enum core_ctl_state state, void *data)
switch (state)
{
case CORE_CTL_RETRO_SYMBOLS_INIT:
{
enum rarch_core_type *core_type = (enum rarch_core_type*)data;
if (!core_type)
return false;
init_libretro_sym(*core_type, &core);
}
break;
case CORE_CTL_RETRO_SET_CONTROLLER_PORT_DEVICE:
{
retro_ctx_controller_info_t *pad = (retro_ctx_controller_info_t*)data;
@ -278,6 +287,7 @@ bool core_ctl(enum core_ctl_state state, void *data)
video_driver_callback_destroy_context();
video_driver_unset_callback();
core.retro_deinit();
uninit_libretro_sym(&core);
break;
case CORE_CTL_RETRO_UNLOAD_GAME:
core.retro_unload_game();

View File

@ -75,6 +75,8 @@ enum core_ctl_state
CORE_CTL_RETRO_UNSERIALIZE,
CORE_CTL_RETRO_SYMBOLS_INIT,
/* Compare libretro core API version against API version
* used by RetroArch.
*