Pass p_rarch pointer around
This commit is contained in:
parent
4163a84d62
commit
5644bd43b1
154
retroarch.c
154
retroarch.c
|
@ -1157,7 +1157,7 @@ static const camera_driver_t *camera_drivers[] = {
|
||||||
|
|
||||||
#if HAVE_DYNAMIC
|
#if HAVE_DYNAMIC
|
||||||
#define runahead_run_secondary() \
|
#define runahead_run_secondary() \
|
||||||
if (!secondary_core_run_use_last_input()) \
|
if (!secondary_core_run_use_last_input(p_rarch)) \
|
||||||
runahead_secondary_core_available = false
|
runahead_secondary_core_available = false
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -2440,7 +2440,7 @@ static void retroarch_init_core_variables(const struct retro_variable *vars);
|
||||||
static void rarch_init_core_options(
|
static void rarch_init_core_options(
|
||||||
const struct retro_core_option_definition *option_defs);
|
const struct retro_core_option_definition *option_defs);
|
||||||
#if defined(HAVE_DYNAMIC) || defined(HAVE_DYLIB)
|
#if defined(HAVE_DYNAMIC) || defined(HAVE_DYLIB)
|
||||||
static bool secondary_core_create(void);
|
static bool secondary_core_create(struct rarch_state *p_rarch);
|
||||||
#endif
|
#endif
|
||||||
static int16_t input_state_get_last(unsigned port,
|
static int16_t input_state_get_last(unsigned port,
|
||||||
unsigned device, unsigned index, unsigned id);
|
unsigned device, unsigned index, unsigned id);
|
||||||
|
@ -12161,10 +12161,9 @@ static void strcat_alloc(char **dst, const char *s)
|
||||||
strcpy(src + len1, s);
|
strcpy(src + len1, s);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void secondary_core_destroy(void)
|
static void secondary_core_destroy(struct rarch_state *p_rarch)
|
||||||
{
|
{
|
||||||
struct rarch_state *p_rarch = &rarch_st;
|
if (!p_rarch || !p_rarch->secondary_module)
|
||||||
if (!p_rarch->secondary_module)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* unload game from core */
|
/* unload game from core */
|
||||||
|
@ -12185,40 +12184,39 @@ static void secondary_core_destroy(void)
|
||||||
p_rarch->secondary_library_path = NULL;
|
p_rarch->secondary_library_path = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool secondary_core_ensure_exists(void)
|
static bool secondary_core_ensure_exists(struct rarch_state *p_rarch)
|
||||||
{
|
{
|
||||||
struct rarch_state *p_rarch = &rarch_st;
|
|
||||||
if (!p_rarch->secondary_module)
|
if (!p_rarch->secondary_module)
|
||||||
if (!secondary_core_create())
|
if (!secondary_core_create(p_rarch))
|
||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(HAVE_RUNAHEAD) && defined(HAVE_DYNAMIC)
|
#if defined(HAVE_RUNAHEAD) && defined(HAVE_DYNAMIC)
|
||||||
static bool secondary_core_deserialize(const void *buffer, int size)
|
static bool secondary_core_deserialize(
|
||||||
|
struct rarch_state *p_rarch,
|
||||||
|
const void *buffer, int size)
|
||||||
{
|
{
|
||||||
struct rarch_state *p_rarch = &rarch_st;
|
if (secondary_core_ensure_exists(p_rarch))
|
||||||
if (secondary_core_ensure_exists())
|
|
||||||
return p_rarch->secondary_core.retro_unserialize(buffer, size);
|
return p_rarch->secondary_core.retro_unserialize(buffer, size);
|
||||||
secondary_core_destroy();
|
secondary_core_destroy(p_rarch);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void remember_controller_port_device(long port, long device)
|
static void remember_controller_port_device(
|
||||||
|
struct rarch_state *p_rarch,
|
||||||
|
long port, long device)
|
||||||
{
|
{
|
||||||
struct rarch_state *p_rarch = &rarch_st;
|
|
||||||
|
|
||||||
if (port >= 0 && port < 16)
|
if (port >= 0 && port < 16)
|
||||||
p_rarch->port_map[port] = (int)device;
|
p_rarch->port_map[port] = (int)device;
|
||||||
if (p_rarch->secondary_module && p_rarch->secondary_core.retro_set_controller_port_device)
|
if (p_rarch->secondary_module && p_rarch->secondary_core.retro_set_controller_port_device)
|
||||||
p_rarch->secondary_core.retro_set_controller_port_device((unsigned)port, (unsigned)device);
|
p_rarch->secondary_core.retro_set_controller_port_device((unsigned)port, (unsigned)device);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void clear_controller_port_map(void)
|
static void clear_controller_port_map(struct rarch_state *p_rarch)
|
||||||
{
|
{
|
||||||
unsigned port;
|
unsigned port;
|
||||||
struct rarch_state *p_rarch = &rarch_st;
|
|
||||||
|
|
||||||
for (port = 0; port < 16; port++)
|
for (port = 0; port < 16; port++)
|
||||||
p_rarch->port_map[port] = -1;
|
p_rarch->port_map[port] = -1;
|
||||||
|
@ -12316,7 +12314,7 @@ static bool write_file_with_random_name(char **temp_dll_path,
|
||||||
return okay;
|
return okay;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *copy_core_to_temp_file(void)
|
static char *copy_core_to_temp_file(struct rarch_state *p_rarch)
|
||||||
{
|
{
|
||||||
bool failed = false;
|
bool failed = false;
|
||||||
char *temp_directory = NULL;
|
char *temp_directory = NULL;
|
||||||
|
@ -12326,7 +12324,6 @@ static char *copy_core_to_temp_file(void)
|
||||||
int64_t dll_file_size = 0;
|
int64_t dll_file_size = 0;
|
||||||
const char *core_path = path_get(RARCH_PATH_CORE);
|
const char *core_path = path_get(RARCH_PATH_CORE);
|
||||||
const char *core_base_name = path_basename(core_path);
|
const char *core_base_name = path_basename(core_path);
|
||||||
struct rarch_state *p_rarch = &rarch_st;
|
|
||||||
settings_t *settings = p_rarch->configuration_settings;
|
settings_t *settings = p_rarch->configuration_settings;
|
||||||
const char *dir_libretro = settings->paths.directory_libretro;
|
const char *dir_libretro = settings->paths.directory_libretro;
|
||||||
|
|
||||||
|
@ -12408,12 +12405,11 @@ static bool rarch_environment_secondary_core_hook(unsigned cmd, void *data)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool secondary_core_create(void)
|
static bool secondary_core_create(struct rarch_state *p_rarch)
|
||||||
{
|
{
|
||||||
long port, device;
|
long port, device;
|
||||||
bool contentless = false;
|
bool contentless = false;
|
||||||
bool is_inited = false;
|
bool is_inited = false;
|
||||||
struct rarch_state *p_rarch = &rarch_st;
|
|
||||||
const enum rarch_core_type
|
const enum rarch_core_type
|
||||||
last_core_type = p_rarch->last_core_type;
|
last_core_type = p_rarch->last_core_type;
|
||||||
|
|
||||||
|
@ -12425,7 +12421,7 @@ static bool secondary_core_create(void)
|
||||||
if (p_rarch->secondary_library_path)
|
if (p_rarch->secondary_library_path)
|
||||||
free(p_rarch->secondary_library_path);
|
free(p_rarch->secondary_library_path);
|
||||||
p_rarch->secondary_library_path = NULL;
|
p_rarch->secondary_library_path = NULL;
|
||||||
p_rarch->secondary_library_path = copy_core_to_temp_file();
|
p_rarch->secondary_library_path = copy_core_to_temp_file(p_rarch);
|
||||||
|
|
||||||
if (!p_rarch->secondary_library_path)
|
if (!p_rarch->secondary_library_path)
|
||||||
return false;
|
return false;
|
||||||
|
@ -12488,26 +12484,25 @@ static bool secondary_core_create(void)
|
||||||
p_rarch->secondary_core.retro_set_controller_port_device(
|
p_rarch->secondary_core.retro_set_controller_port_device(
|
||||||
(unsigned)port, (unsigned)device);
|
(unsigned)port, (unsigned)device);
|
||||||
}
|
}
|
||||||
clear_controller_port_map();
|
clear_controller_port_map(p_rarch);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
secondary_core_destroy();
|
secondary_core_destroy(p_rarch);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void secondary_core_input_poll_null(void) { }
|
static void secondary_core_input_poll_null(void) { }
|
||||||
|
|
||||||
static bool secondary_core_run_use_last_input(void)
|
static bool secondary_core_run_use_last_input(struct rarch_state *p_rarch)
|
||||||
{
|
{
|
||||||
retro_input_poll_t old_poll_function;
|
retro_input_poll_t old_poll_function;
|
||||||
retro_input_state_t old_input_function;
|
retro_input_state_t old_input_function;
|
||||||
struct rarch_state *p_rarch = &rarch_st;
|
|
||||||
|
|
||||||
if (!secondary_core_ensure_exists())
|
if (!secondary_core_ensure_exists(p_rarch))
|
||||||
{
|
{
|
||||||
secondary_core_destroy();
|
secondary_core_destroy(p_rarch);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12531,9 +12526,11 @@ static bool secondary_core_run_use_last_input(void)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
static void secondary_core_destroy(void) { }
|
static void secondary_core_destroy(struct rarch_state *p_rarch) { }
|
||||||
static void remember_controller_port_device(long port, long device) { }
|
static void remember_controller_port_device(
|
||||||
static void clear_controller_port_map(void) { }
|
struct rarch_state *p_rarch,
|
||||||
|
long port, long device) { }
|
||||||
|
static void clear_controller_port_map(struct rarch_state *p_rarch) { }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -26201,10 +26198,8 @@ static void runahead_save_state_list_init(size_t save_state_size)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Hooks - Hooks to cleanup, and add dirty input hooks */
|
/* Hooks - Hooks to cleanup, and add dirty input hooks */
|
||||||
static void runahead_remove_hooks(void)
|
static void runahead_remove_hooks(struct rarch_state *p_rarch)
|
||||||
{
|
{
|
||||||
struct rarch_state *p_rarch = &rarch_st;
|
|
||||||
|
|
||||||
if (p_rarch->original_retro_deinit)
|
if (p_rarch->original_retro_deinit)
|
||||||
{
|
{
|
||||||
p_rarch->current_core.retro_deinit = p_rarch->original_retro_deinit;
|
p_rarch->current_core.retro_deinit = p_rarch->original_retro_deinit;
|
||||||
|
@ -26219,10 +26214,8 @@ static void runahead_remove_hooks(void)
|
||||||
remove_input_state_hook();
|
remove_input_state_hook();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void runahead_clear_variables(void)
|
static void runahead_clear_variables(struct rarch_state *p_rarch)
|
||||||
{
|
{
|
||||||
struct rarch_state *p_rarch = &rarch_st;
|
|
||||||
|
|
||||||
p_rarch->runahead_save_state_size = 0;
|
p_rarch->runahead_save_state_size = 0;
|
||||||
p_rarch->runahead_save_state_size_known = false;
|
p_rarch->runahead_save_state_size_known = false;
|
||||||
runahead_video_driver_is_active = true;
|
runahead_video_driver_is_active = true;
|
||||||
|
@ -26232,22 +26225,20 @@ static void runahead_clear_variables(void)
|
||||||
p_rarch->runahead_last_frame_count = 0;
|
p_rarch->runahead_last_frame_count = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void runahead_destroy(void)
|
static void runahead_destroy(struct rarch_state *p_rarch)
|
||||||
{
|
{
|
||||||
struct rarch_state *p_rarch = &rarch_st;
|
|
||||||
|
|
||||||
mylist_destroy(&p_rarch->runahead_save_state_list);
|
mylist_destroy(&p_rarch->runahead_save_state_list);
|
||||||
runahead_remove_hooks();
|
runahead_remove_hooks(p_rarch);
|
||||||
runahead_clear_variables();
|
runahead_clear_variables(p_rarch);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void unload_hook(void)
|
static void unload_hook(void)
|
||||||
{
|
{
|
||||||
struct rarch_state *p_rarch = &rarch_st;
|
struct rarch_state *p_rarch = &rarch_st;
|
||||||
|
|
||||||
runahead_remove_hooks();
|
runahead_remove_hooks(p_rarch);
|
||||||
runahead_destroy();
|
runahead_destroy(p_rarch);
|
||||||
secondary_core_destroy();
|
secondary_core_destroy(p_rarch);
|
||||||
if (p_rarch->current_core.retro_unload_game)
|
if (p_rarch->current_core.retro_unload_game)
|
||||||
p_rarch->current_core.retro_unload_game();
|
p_rarch->current_core.retro_unload_game();
|
||||||
p_rarch->core_poll_type_override = POLL_TYPE_OVERRIDE_DONTCARE;
|
p_rarch->core_poll_type_override = POLL_TYPE_OVERRIDE_DONTCARE;
|
||||||
|
@ -26257,17 +26248,15 @@ static void runahead_deinit_hook(void)
|
||||||
{
|
{
|
||||||
struct rarch_state *p_rarch = &rarch_st;
|
struct rarch_state *p_rarch = &rarch_st;
|
||||||
|
|
||||||
runahead_remove_hooks();
|
runahead_remove_hooks(p_rarch);
|
||||||
runahead_destroy();
|
runahead_destroy(p_rarch);
|
||||||
secondary_core_destroy();
|
secondary_core_destroy(p_rarch);
|
||||||
if (p_rarch->current_core.retro_deinit)
|
if (p_rarch->current_core.retro_deinit)
|
||||||
p_rarch->current_core.retro_deinit();
|
p_rarch->current_core.retro_deinit();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void runahead_add_hooks(void)
|
static void runahead_add_hooks(struct rarch_state *p_rarch)
|
||||||
{
|
{
|
||||||
struct rarch_state *p_rarch = &rarch_st;
|
|
||||||
|
|
||||||
if (!p_rarch->original_retro_deinit)
|
if (!p_rarch->original_retro_deinit)
|
||||||
{
|
{
|
||||||
p_rarch->original_retro_deinit = p_rarch->current_core.retro_deinit;
|
p_rarch->original_retro_deinit = p_rarch->current_core.retro_deinit;
|
||||||
|
@ -26284,22 +26273,19 @@ static void runahead_add_hooks(void)
|
||||||
|
|
||||||
/* Runahead Code */
|
/* Runahead Code */
|
||||||
|
|
||||||
static void runahead_error(void)
|
static void runahead_error(struct rarch_state *p_rarch)
|
||||||
{
|
{
|
||||||
struct rarch_state *p_rarch = &rarch_st;
|
|
||||||
|
|
||||||
runahead_available = false;
|
runahead_available = false;
|
||||||
mylist_destroy(&p_rarch->runahead_save_state_list);
|
mylist_destroy(&p_rarch->runahead_save_state_list);
|
||||||
runahead_remove_hooks();
|
runahead_remove_hooks(p_rarch);
|
||||||
p_rarch->runahead_save_state_size = 0;
|
p_rarch->runahead_save_state_size = 0;
|
||||||
p_rarch->runahead_save_state_size_known = true;
|
p_rarch->runahead_save_state_size_known = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool runahead_create(void)
|
static bool runahead_create(struct rarch_state *p_rarch)
|
||||||
{
|
{
|
||||||
/* get savestate size and allocate buffer */
|
/* get savestate size and allocate buffer */
|
||||||
retro_ctx_size_info_t info;
|
retro_ctx_size_info_t info;
|
||||||
struct rarch_state *p_rarch = &rarch_st;
|
|
||||||
|
|
||||||
p_rarch->request_fast_savestate = true;
|
p_rarch->request_fast_savestate = true;
|
||||||
core_serialize_size(&info);
|
core_serialize_size(&info);
|
||||||
|
@ -26311,20 +26297,19 @@ static bool runahead_create(void)
|
||||||
if ( (p_rarch->runahead_save_state_size == 0) ||
|
if ( (p_rarch->runahead_save_state_size == 0) ||
|
||||||
!p_rarch->runahead_save_state_size_known)
|
!p_rarch->runahead_save_state_size_known)
|
||||||
{
|
{
|
||||||
runahead_error();
|
runahead_error(p_rarch);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
runahead_add_hooks();
|
runahead_add_hooks(p_rarch);
|
||||||
runahead_force_input_dirty = true;
|
runahead_force_input_dirty = true;
|
||||||
mylist_resize(p_rarch->runahead_save_state_list, 1, true);
|
mylist_resize(p_rarch->runahead_save_state_list, 1, true);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool runahead_save_state(void)
|
static bool runahead_save_state(struct rarch_state *p_rarch)
|
||||||
{
|
{
|
||||||
retro_ctx_serialize_info_t *serialize_info;
|
retro_ctx_serialize_info_t *serialize_info;
|
||||||
struct rarch_state *p_rarch = &rarch_st;
|
|
||||||
bool okay = false;
|
bool okay = false;
|
||||||
|
|
||||||
if (!p_rarch->runahead_save_state_list)
|
if (!p_rarch->runahead_save_state_list)
|
||||||
|
@ -26340,13 +26325,12 @@ static bool runahead_save_state(void)
|
||||||
if (okay)
|
if (okay)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
runahead_error();
|
runahead_error(p_rarch);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool runahead_load_state(void)
|
static bool runahead_load_state(struct rarch_state *p_rarch)
|
||||||
{
|
{
|
||||||
struct rarch_state *p_rarch = &rarch_st;
|
|
||||||
bool okay = false;
|
bool okay = false;
|
||||||
retro_ctx_serialize_info_t *serialize_info = (retro_ctx_serialize_info_t*)
|
retro_ctx_serialize_info_t *serialize_info = (retro_ctx_serialize_info_t*)
|
||||||
p_rarch->runahead_save_state_list->data[0];
|
p_rarch->runahead_save_state_list->data[0];
|
||||||
|
@ -26363,28 +26347,28 @@ static bool runahead_load_state(void)
|
||||||
p_rarch->input_is_dirty = last_dirty;
|
p_rarch->input_is_dirty = last_dirty;
|
||||||
|
|
||||||
if (!okay)
|
if (!okay)
|
||||||
runahead_error();
|
runahead_error(p_rarch);
|
||||||
|
|
||||||
return okay;
|
return okay;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if HAVE_DYNAMIC
|
#if HAVE_DYNAMIC
|
||||||
static bool runahead_load_state_secondary(void)
|
static bool runahead_load_state_secondary(struct rarch_state *p_rarch)
|
||||||
{
|
{
|
||||||
struct rarch_state *p_rarch = &rarch_st;
|
|
||||||
bool okay = false;
|
bool okay = false;
|
||||||
retro_ctx_serialize_info_t *serialize_info =
|
retro_ctx_serialize_info_t *serialize_info =
|
||||||
(retro_ctx_serialize_info_t*)p_rarch->runahead_save_state_list->data[0];
|
(retro_ctx_serialize_info_t*)p_rarch->runahead_save_state_list->data[0];
|
||||||
|
|
||||||
p_rarch->request_fast_savestate = true;
|
p_rarch->request_fast_savestate = true;
|
||||||
okay = secondary_core_deserialize(
|
okay = secondary_core_deserialize(
|
||||||
|
p_rarch,
|
||||||
serialize_info->data_const, (int)serialize_info->size);
|
serialize_info->data_const, (int)serialize_info->size);
|
||||||
p_rarch->request_fast_savestate = false;
|
p_rarch->request_fast_savestate = false;
|
||||||
|
|
||||||
if (!okay)
|
if (!okay)
|
||||||
{
|
{
|
||||||
runahead_secondary_core_available = false;
|
runahead_secondary_core_available = false;
|
||||||
runahead_error();
|
runahead_error(p_rarch);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26392,9 +26376,8 @@ static bool runahead_load_state_secondary(void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static bool runahead_core_run_use_last_input(void)
|
static bool runahead_core_run_use_last_input(struct rarch_state *p_rarch)
|
||||||
{
|
{
|
||||||
struct rarch_state *p_rarch = &rarch_st;
|
|
||||||
struct retro_callbacks *cbs = &p_rarch->retro_ctx;
|
struct retro_callbacks *cbs = &p_rarch->retro_ctx;
|
||||||
retro_input_poll_t old_poll_function = cbs->poll_cb;
|
retro_input_poll_t old_poll_function = cbs->poll_cb;
|
||||||
retro_input_state_t old_input_function = cbs->state_cb;
|
retro_input_state_t old_input_function = cbs->state_cb;
|
||||||
|
@ -26416,7 +26399,9 @@ static bool runahead_core_run_use_last_input(void)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void do_runahead(int runahead_count, bool use_secondary)
|
static void do_runahead(
|
||||||
|
struct rarch_state *p_rarch,
|
||||||
|
int runahead_count, bool use_secondary)
|
||||||
{
|
{
|
||||||
int frame_number = 0;
|
int frame_number = 0;
|
||||||
bool last_frame = false;
|
bool last_frame = false;
|
||||||
|
@ -26426,8 +26411,6 @@ static void do_runahead(int runahead_count, bool use_secondary)
|
||||||
#else
|
#else
|
||||||
const bool have_dynamic = false;
|
const bool have_dynamic = false;
|
||||||
#endif
|
#endif
|
||||||
struct rarch_state
|
|
||||||
*p_rarch = &rarch_st;
|
|
||||||
uint64_t frame_count = p_rarch->video_driver_frame_count;
|
uint64_t frame_count = p_rarch->video_driver_frame_count;
|
||||||
|
|
||||||
if (runahead_count <= 0 || !runahead_available)
|
if (runahead_count <= 0 || !runahead_available)
|
||||||
|
@ -26435,7 +26418,7 @@ static void do_runahead(int runahead_count, bool use_secondary)
|
||||||
|
|
||||||
if (!p_rarch->runahead_save_state_size_known)
|
if (!p_rarch->runahead_save_state_size_known)
|
||||||
{
|
{
|
||||||
if (!runahead_create())
|
if (!runahead_create(p_rarch))
|
||||||
{
|
{
|
||||||
settings_t *settings = p_rarch->configuration_settings;
|
settings_t *settings = p_rarch->configuration_settings;
|
||||||
bool runahead_hide_warnings = settings->bools.run_ahead_hide_warnings;
|
bool runahead_hide_warnings = settings->bools.run_ahead_hide_warnings;
|
||||||
|
@ -26471,7 +26454,7 @@ static void do_runahead(int runahead_count, bool use_secondary)
|
||||||
if (frame_number == 0)
|
if (frame_number == 0)
|
||||||
core_run();
|
core_run();
|
||||||
else
|
else
|
||||||
runahead_core_run_use_last_input();
|
runahead_core_run_use_last_input(p_rarch);
|
||||||
|
|
||||||
if (suspended_frame)
|
if (suspended_frame)
|
||||||
{
|
{
|
||||||
|
@ -26481,7 +26464,7 @@ static void do_runahead(int runahead_count, bool use_secondary)
|
||||||
|
|
||||||
if (frame_number == 0)
|
if (frame_number == 0)
|
||||||
{
|
{
|
||||||
if (!runahead_save_state())
|
if (!runahead_save_state(p_rarch))
|
||||||
{
|
{
|
||||||
runloop_msg_queue_push(msg_hash_to_str(MSG_RUNAHEAD_FAILED_TO_SAVE_STATE), 0, 3 * 60, true, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
|
runloop_msg_queue_push(msg_hash_to_str(MSG_RUNAHEAD_FAILED_TO_SAVE_STATE), 0, 3 * 60, true, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
|
||||||
return;
|
return;
|
||||||
|
@ -26490,7 +26473,7 @@ static void do_runahead(int runahead_count, bool use_secondary)
|
||||||
|
|
||||||
if (last_frame)
|
if (last_frame)
|
||||||
{
|
{
|
||||||
if (!runahead_load_state())
|
if (!runahead_load_state(p_rarch))
|
||||||
{
|
{
|
||||||
runloop_msg_queue_push(msg_hash_to_str(MSG_RUNAHEAD_FAILED_TO_LOAD_STATE), 0, 3 * 60, true, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
|
runloop_msg_queue_push(msg_hash_to_str(MSG_RUNAHEAD_FAILED_TO_LOAD_STATE), 0, 3 * 60, true, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
|
||||||
return;
|
return;
|
||||||
|
@ -26501,9 +26484,9 @@ static void do_runahead(int runahead_count, bool use_secondary)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
#if HAVE_DYNAMIC
|
#if HAVE_DYNAMIC
|
||||||
if (!secondary_core_ensure_exists())
|
if (!secondary_core_ensure_exists(p_rarch))
|
||||||
{
|
{
|
||||||
secondary_core_destroy();
|
secondary_core_destroy(p_rarch);
|
||||||
runahead_secondary_core_available = false;
|
runahead_secondary_core_available = false;
|
||||||
runloop_msg_queue_push(msg_hash_to_str(MSG_RUNAHEAD_FAILED_TO_CREATE_SECONDARY_INSTANCE), 0, 3 * 60, true, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
|
runloop_msg_queue_push(msg_hash_to_str(MSG_RUNAHEAD_FAILED_TO_CREATE_SECONDARY_INSTANCE), 0, 3 * 60, true, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
|
||||||
goto force_input_dirty;
|
goto force_input_dirty;
|
||||||
|
@ -26518,13 +26501,13 @@ static void do_runahead(int runahead_count, bool use_secondary)
|
||||||
{
|
{
|
||||||
p_rarch->input_is_dirty = false;
|
p_rarch->input_is_dirty = false;
|
||||||
|
|
||||||
if (!runahead_save_state())
|
if (!runahead_save_state(p_rarch))
|
||||||
{
|
{
|
||||||
runloop_msg_queue_push(msg_hash_to_str(MSG_RUNAHEAD_FAILED_TO_SAVE_STATE), 0, 3 * 60, true, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
|
runloop_msg_queue_push(msg_hash_to_str(MSG_RUNAHEAD_FAILED_TO_SAVE_STATE), 0, 3 * 60, true, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!runahead_load_state_secondary())
|
if (!runahead_load_state_secondary(p_rarch))
|
||||||
{
|
{
|
||||||
runloop_msg_queue_push(msg_hash_to_str(MSG_RUNAHEAD_FAILED_TO_LOAD_STATE), 0, 3 * 60, true, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
|
runloop_msg_queue_push(msg_hash_to_str(MSG_RUNAHEAD_FAILED_TO_LOAD_STATE), 0, 3 * 60, true, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
|
||||||
return;
|
return;
|
||||||
|
@ -30313,7 +30296,10 @@ int runloop_iterate(void)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (want_runahead)
|
if (want_runahead)
|
||||||
do_runahead(run_ahead_num_frames, settings->bools.run_ahead_secondary_instance);
|
do_runahead(
|
||||||
|
p_rarch,
|
||||||
|
run_ahead_num_frames,
|
||||||
|
settings->bools.run_ahead_secondary_instance);
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
core_run();
|
core_run();
|
||||||
|
@ -30786,7 +30772,7 @@ bool core_set_controller_port_device(retro_ctx_controller_info_t *pad)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
#ifdef HAVE_RUNAHEAD
|
#ifdef HAVE_RUNAHEAD
|
||||||
remember_controller_port_device(pad->port, pad->device);
|
remember_controller_port_device(p_rarch, pad->port, pad->device);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
p_rarch->current_core.retro_set_controller_port_device(pad->port, pad->device);
|
p_rarch->current_core.retro_set_controller_port_device(pad->port, pad->device);
|
||||||
|
@ -30814,7 +30800,7 @@ bool core_load_game(retro_ctx_load_content_info_t *load_info)
|
||||||
|
|
||||||
#ifdef HAVE_RUNAHEAD
|
#ifdef HAVE_RUNAHEAD
|
||||||
set_load_content_info(load_info);
|
set_load_content_info(load_info);
|
||||||
clear_controller_port_map();
|
clear_controller_port_map(p_rarch);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
content_get_status(&contentless, &is_inited);
|
content_get_status(&contentless, &is_inited);
|
||||||
|
|
Loading…
Reference in New Issue