From 6958a23b964ee5467ef44b2f7510aa92b7fc5da2 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 27 Jan 2016 05:19:15 +0100 Subject: [PATCH] Add RETRO_CTL_RETRO_SET_ENVIRONMENT --- command_event.c | 4 +++- libretro_version_1.c | 8 ++++++++ libretro_version_1.h | 9 ++++++++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/command_event.c b/command_event.c index 4c7c216c8e..22ce6fe241 100644 --- a/command_event.c +++ b/command_event.c @@ -564,6 +564,7 @@ static bool event_init_content(void) static bool event_init_core(void) { + retro_ctx_environ_info_t info; global_t *global = global_get_ptr(); settings_t *settings = config_get_ptr(); @@ -579,7 +580,8 @@ static bool event_init_core(void) /* reset video format to libretro's default */ video_driver_set_pixel_format(RETRO_PIXEL_FORMAT_0RGB1555); - core.retro_set_environment(rarch_environment_cb); + info.env = rarch_environment_cb; + core_ctl(CORE_CTL_RETRO_SET_ENVIRONMENT, &info); /* auto-remap: apply remap files */ if(settings->auto_remaps_enable) diff --git a/libretro_version_1.c b/libretro_version_1.c index 0b007ecfbf..7284d2b5bf 100644 --- a/libretro_version_1.c +++ b/libretro_version_1.c @@ -187,6 +187,14 @@ bool core_ctl(enum core_ctl_state state, void *data) return false; retro_ctx.poll_cb(); break; + case CORE_CTL_RETRO_SET_ENVIRONMENT: + { + retro_ctx_environ_info_t *info = (retro_ctx_environ_info_t*)data; + if (!info) + return false; + core.retro_set_environment(info->env); + } + break; case CORE_CTL_RETRO_GET_SYSTEM_AV_INFO: { struct retro_system_av_info *av_info = (struct retro_system_av_info*)data; diff --git a/libretro_version_1.h b/libretro_version_1.h index 7a8fce8251..ee7b636a18 100644 --- a/libretro_version_1.h +++ b/libretro_version_1.h @@ -64,9 +64,16 @@ enum core_ctl_state CORE_CTL_RETRO_CTX_FRAME_CB, - CORE_CTL_RETRO_CTX_POLL_CB + CORE_CTL_RETRO_CTX_POLL_CB, + + CORE_CTL_RETRO_SET_ENVIRONMENT }; +typedef struct retro_ctx_environ_info +{ + retro_environment_t env; +} retro_ctx_environ_info_t; + typedef struct retro_ctx_frame_info { const void *data;