Get rid of rarch_system_info_get_ptr

This commit is contained in:
twinaphex 2015-12-10 22:30:25 +01:00
parent 10f934dc70
commit fc6505e408
23 changed files with 242 additions and 140 deletions

View File

@ -160,7 +160,9 @@ void driver_camera_stop(void)
**/ **/
void driver_camera_poll(void) void driver_camera_poll(void)
{ {
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
if (camera_driver && camera_driver->poll && camera_data) if (camera_driver && camera_driver->poll && camera_data)
camera_driver->poll(camera_data, camera_driver->poll(camera_data,
@ -171,7 +173,9 @@ void driver_camera_poll(void)
void init_camera(void) void init_camera(void)
{ {
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
/* Resource leaks will follow if camera is initialized twice. */ /* Resource leaks will follow if camera is initialized twice. */
if (camera_data) if (camera_data)
@ -199,7 +203,8 @@ void init_camera(void)
static void uninit_camera(void) static void uninit_camera(void)
{ {
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
if (camera_data && camera_driver) if (camera_data && camera_driver)
{ {

View File

@ -70,11 +70,15 @@
**/ **/
static void event_disk_control_set_eject(bool new_state, bool print_log) static void event_disk_control_set_eject(bool new_state, bool print_log)
{ {
char msg[128] = {0}; char msg[128] = {0};
bool error = false; bool error = false;
rarch_system_info_t *info = rarch_system_info_get_ptr(); rarch_system_info_t *info = NULL;
const struct retro_disk_control_callback *control = const struct retro_disk_control_callback *control = NULL;
info ? (const struct retro_disk_control_callback*)&info->disk_control : NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &info);
if (info)
control = (const struct retro_disk_control_callback*)&info->disk_control;
if (!control || !control->get_num_images) if (!control || !control->get_num_images)
return; return;
@ -116,9 +120,13 @@ static void event_disk_control_set_index(unsigned idx)
unsigned num_disks; unsigned num_disks;
bool error = false; bool error = false;
char msg[128] = {0}; char msg[128] = {0};
rarch_system_info_t *info = rarch_system_info_get_ptr(); rarch_system_info_t *info = NULL;
const struct retro_disk_control_callback *control = const struct retro_disk_control_callback *control = NULL;
info ? (const struct retro_disk_control_callback*)&info->disk_control : NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &info);
if (info)
control = (const struct retro_disk_control_callback*)&info->disk_control;
if (!control || !control->get_num_images) if (!control || !control->get_num_images)
return; return;
@ -166,13 +174,16 @@ static void event_disk_control_set_index(unsigned idx)
void event_disk_control_append_image(const char *path) void event_disk_control_append_image(const char *path)
{ {
unsigned new_idx; unsigned new_idx;
char msg[128] = {0}; char msg[128] = {0};
struct retro_game_info info = {0}; struct retro_game_info info = {0};
global_t *global = global_get_ptr(); global_t *global = global_get_ptr();
rarch_system_info_t *sysinfo = rarch_system_info_get_ptr(); const struct retro_disk_control_callback *control = NULL;
const struct retro_disk_control_callback *control = rarch_system_info_t *sysinfo = NULL;
sysinfo ? (const struct retro_disk_control_callback*)&sysinfo->disk_control
: NULL; runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &sysinfo);
if (sysinfo)
control = (const struct retro_disk_control_callback*)&sysinfo->disk_control;
if (!control) if (!control)
return; return;
@ -309,7 +320,9 @@ static void event_init_controllers(void)
{ {
unsigned i; unsigned i;
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
rarch_system_info_t *info = rarch_system_info_get_ptr(); rarch_system_info_t *info = NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &info);
for (i = 0; i < MAX_USERS; i++) for (i = 0; i < MAX_USERS; i++)
{ {
@ -869,11 +882,13 @@ static bool event_update_system_info(struct retro_system_info *_info,
**/ **/
bool event_command(enum event_command cmd) bool event_command(enum event_command cmd)
{ {
unsigned i = 0; unsigned i = 0;
bool boolean = false; bool boolean = false;
global_t *global = global_get_ptr(); global_t *global = global_get_ptr();
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
rarch_system_info_t *info = rarch_system_info_get_ptr(); rarch_system_info_t *info = NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &info);
(void)i; (void)i;

View File

@ -1923,7 +1923,9 @@ bool config_load_override(void)
bool should_append = false; bool should_append = false;
global_t *global = global_get_ptr(); global_t *global = global_get_ptr();
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
if (!global || !settings || !system) if (!global || !settings || !system)
{ {
@ -2111,7 +2113,9 @@ bool config_load_remap(void)
char game_path[PATH_MAX_LENGTH] = {0}; /* final path for game-specific configuration (prefix+suffix) */ char game_path[PATH_MAX_LENGTH] = {0}; /* final path for game-specific configuration (prefix+suffix) */
global_t *global = global_get_ptr(); global_t *global = global_get_ptr();
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
/* Early return in case a library isn't loaded or remapping is disabled */ /* Early return in case a library isn't loaded or remapping is disabled */
if (!system->info.library_name || !strcmp(system->info.library_name,"No Core")) if (!system->info.library_name || !strcmp(system->info.library_name,"No Core"))

View File

@ -394,7 +394,9 @@ static bool load_content_need_fullpath(
char new_basedir[PATH_MAX_LENGTH] = {0}; char new_basedir[PATH_MAX_LENGTH] = {0};
bool ret = false; bool ret = false;
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
rarch_system_info_t *sys_info= rarch_system_info_get_ptr(); rarch_system_info_t *sys_info= NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &sys_info);
if (sys_info && sys_info->info.block_extract) if (sys_info && sys_info->info.block_extract)
return true; return true;
@ -552,11 +554,13 @@ bool init_content_file(void)
bool ret = false; bool ret = false;
struct string_list *content = NULL; struct string_list *content = NULL;
const struct retro_subsystem_info *special = NULL; const struct retro_subsystem_info *special = NULL;
rarch_system_info_t *system = NULL;
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
rarch_system_info_t *system = rarch_system_info_get_ptr();
global_t *global = global_get_ptr(); global_t *global = global_get_ptr();
temporary_content = string_list_new(); temporary_content = string_list_new();
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
if (!temporary_content) if (!temporary_content)
goto error; goto error;

View File

@ -231,8 +231,9 @@ void init_drivers_pre(void)
static void driver_adjust_system_rates(void) static void driver_adjust_system_rates(void)
{ {
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
audio_driver_ctl(RARCH_AUDIO_CTL_MONITOR_ADJUST_SYSTEM_RATES, NULL); audio_driver_ctl(RARCH_AUDIO_CTL_MONITOR_ADJUST_SYSTEM_RATES, NULL);
video_driver_ctl(RARCH_DISPLAY_CTL_MONITOR_ADJUST_SYSTEM_RATES, NULL); video_driver_ctl(RARCH_DISPLAY_CTL_MONITOR_ADJUST_SYSTEM_RATES, NULL);
@ -271,9 +272,11 @@ void driver_set_refresh_rate(float hz)
void driver_set_nonblock_state(void) void driver_set_nonblock_state(void)
{ {
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
rarch_system_info_t *system = rarch_system_info_get_ptr();
bool enable = input_driver_ctl( bool enable = input_driver_ctl(
RARCH_INPUT_CTL_IS_NONBLOCK_STATE, NULL); RARCH_INPUT_CTL_IS_NONBLOCK_STATE, NULL);
rarch_system_info_t *system = NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
/* Only apply non-block-state for video if we're using vsync. */ /* Only apply non-block-state for video if we're using vsync. */
if (video_driver_ctl(RARCH_DISPLAY_CTL_IS_ACTIVE, NULL) if (video_driver_ctl(RARCH_DISPLAY_CTL_IS_ACTIVE, NULL)

View File

@ -606,7 +606,9 @@ bool rarch_environment_cb(unsigned cmd, void *data)
unsigned p; unsigned p;
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
global_t *global = global_get_ptr(); global_t *global = global_get_ptr();
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
if (ignore_environment_cb) if (ignore_environment_cb)
return false; return false;

View File

@ -152,7 +152,9 @@ static void history_playlist_push(content_playlist_t *playlist,
{ {
char tmp[PATH_MAX_LENGTH] = {0}; char tmp[PATH_MAX_LENGTH] = {0};
global_t *global = global_get_ptr(); global_t *global = global_get_ptr();
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
if (!playlist || (global->inited.core.type == CORE_TYPE_DUMMY) || !info) if (!playlist || (global->inited.core.type == CORE_TYPE_DUMMY) || !info)
return; return;
@ -285,7 +287,9 @@ int rarch_main(int argc, char *argv[], void *data)
{ {
char *fullpath = NULL; char *fullpath = NULL;
global_t *global = global_get_ptr(); global_t *global = global_get_ptr();
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
runloop_ctl(RUNLOOP_CTL_GET_CONTENT_PATH, &fullpath); runloop_ctl(RUNLOOP_CTL_GET_CONTENT_PATH, &fullpath);

View File

@ -597,16 +597,18 @@ error:
static bool init_video(void) static bool init_video(void)
{ {
unsigned max_dim, scale, width, height; unsigned max_dim, scale, width, height;
video_viewport_t *custom_vp = NULL; video_viewport_t *custom_vp = NULL;
const input_driver_t *tmp = NULL; const input_driver_t *tmp = NULL;
const struct retro_game_geometry *geom = NULL; const struct retro_game_geometry *geom = NULL;
video_info_t video = {0}; rarch_system_info_t *system = NULL;
static uint16_t dummy_pixels[32] = {0}; video_info_t video = {0};
settings_t *settings = config_get_ptr(); static uint16_t dummy_pixels[32] = {0};
rarch_system_info_t *system = rarch_system_info_get_ptr(); settings_t *settings = config_get_ptr();
struct retro_system_av_info *av_info = struct retro_system_av_info *av_info =
video_viewport_get_system_av_info(); video_viewport_get_system_av_info();
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
init_video_filter(video_driver_state.pix_fmt); init_video_filter(video_driver_state.pix_fmt);
event_command(EVENT_CMD_SHADER_DIR_INIT); event_command(EVENT_CMD_SHADER_DIR_INIT);
@ -1016,7 +1018,9 @@ bool video_monitor_get_fps(char *buf, size_t size,
static retro_time_t curr_time; static retro_time_t curr_time;
static retro_time_t fps_time; static retro_time_t fps_time;
retro_time_t new_time = retro_get_time_usec(); retro_time_t new_time = retro_get_time_usec();
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
*buf = '\0'; *buf = '\0';
@ -1153,10 +1157,12 @@ static void video_monitor_adjust_system_rates(void)
{ {
float timing_skew; float timing_skew;
const struct retro_system_timing *info = NULL; const struct retro_system_timing *info = NULL;
struct retro_system_av_info *av_info = struct retro_system_av_info *av_info =
video_viewport_get_system_av_info(); video_viewport_get_system_av_info();
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
if (!system) if (!system)
return; return;
@ -1197,6 +1203,7 @@ void video_driver_menu_settings(void **list_data, void *list_info_data,
rarch_setting_group_info_t *group_info = (rarch_setting_group_info_t*)group_data; rarch_setting_group_info_t *group_info = (rarch_setting_group_info_t*)group_data;
rarch_setting_group_info_t *subgroup_info = (rarch_setting_group_info_t*)subgroup_data; rarch_setting_group_info_t *subgroup_info = (rarch_setting_group_info_t*)subgroup_data;
global_t *global = global_get_ptr(); global_t *global = global_get_ptr();
(void)list; (void)list;
(void)list_info; (void)list_info;
(void)group_info; (void)group_info;

View File

@ -237,7 +237,9 @@ void input_keyboard_event(bool down, unsigned code,
uint32_t character, uint16_t mod, unsigned device) uint32_t character, uint16_t mod, unsigned device)
{ {
static bool deferred_wait_keys; static bool deferred_wait_keys;
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
if (deferred_wait_keys) if (deferred_wait_keys)
{ {

View File

@ -191,7 +191,9 @@ bool driver_location_get_position(double *lat, double *lon,
void init_location(void) void init_location(void)
{ {
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
/* Resource leaks will follow if location interface is initialized twice. */ /* Resource leaks will follow if location interface is initialized twice. */
if (location_data) if (location_data)
@ -213,7 +215,9 @@ void init_location(void)
static void uninit_location(void) static void uninit_location(void)
{ {
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
if (location_data && location_driver) if (location_data && location_driver)
{ {

View File

@ -510,10 +510,12 @@ enum
static int general_push(menu_displaylist_info_t *info, unsigned id, unsigned type) static int general_push(menu_displaylist_info_t *info, unsigned id, unsigned type)
{ {
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
menu_handle_t *menu = menu_driver_get_ptr(); menu_handle_t *menu = menu_driver_get_ptr();
const char *exts = core_info_list_get_all_extensions(); const char *exts = core_info_list_get_all_extensions();
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
switch (id) switch (id)
{ {
case PUSH_DEFAULT: case PUSH_DEFAULT:

View File

@ -566,10 +566,11 @@ static void menu_action_setting_disp_set_label_menu_disk_index(
const char *path, const char *path,
char *s2, size_t len2) char *s2, size_t len2)
{ {
unsigned images = 0, current = 0; unsigned images = 0, current = 0;
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
struct retro_disk_control_callback *control = NULL; struct retro_disk_control_callback *control = NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
if (!system) if (!system)
return; return;
@ -948,8 +949,10 @@ static void menu_action_setting_disp_set_label_core_option_create(
const char *path, const char *path,
char *s2, size_t len2) char *s2, size_t len2)
{ {
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
global_t *global = global_get_ptr(); global_t *global = global_get_ptr();
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
if (!system) if (!system)
return; return;
@ -972,8 +975,10 @@ static void menu_action_setting_disp_set_label(file_list_t* list,
const char *path, const char *path,
char *s2, size_t len2) char *s2, size_t len2)
{ {
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
uint32_t hash_label = menu_hash_calculate(label); uint32_t hash_label = menu_hash_calculate(label);
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
*s = '\0'; *s = '\0';
*w = 19; *w = 19;

View File

@ -887,9 +887,14 @@ static int generic_action_ok_remap_file_save(const char *path,
char file[PATH_MAX_LENGTH]; char file[PATH_MAX_LENGTH];
global_t *global = global_get_ptr(); global_t *global = global_get_ptr();
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
rarch_system_info_t *info = rarch_system_info_get_ptr(); rarch_system_info_t *info = NULL;
const char *game_name = NULL; const char *game_name = NULL;
const char *core_name = info ? info->info.library_name : NULL; const char *core_name = NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &info);
if (info)
core_name = info->info.library_name;
fill_pathname_join(directory, settings->input_remapping_directory, core_name, PATH_MAX_LENGTH); fill_pathname_join(directory, settings->input_remapping_directory, core_name, PATH_MAX_LENGTH);
@ -1266,16 +1271,17 @@ static int action_ok_disk_cycle_tray_status(const char *path,
static int action_ok_option_create(const char *path, static int action_ok_option_create(const char *path,
const char *label, unsigned type, size_t idx, size_t entry_idx) const char *label, unsigned type, size_t idx, size_t entry_idx)
{ {
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
global_t *global = global_get_ptr(); global_t *global = global_get_ptr();
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
const char *core_name = NULL; const char *core_name = NULL;
const char *game_name = NULL; const char *game_name = NULL;
char core_path[PATH_MAX_LENGTH] = {0}; char core_path[PATH_MAX_LENGTH] = {0};
char game_path[PATH_MAX_LENGTH] = {0}; char game_path[PATH_MAX_LENGTH] = {0};
char config_directory[PATH_MAX_LENGTH] = {0}; char config_directory[PATH_MAX_LENGTH] = {0};
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
/* Config directory: config_directory. /* Config directory: config_directory.
* Try config directory setting first, * Try config directory setting first,
* fallback to the location of the current configuration file. */ * fallback to the location of the current configuration file. */

View File

@ -247,8 +247,10 @@ static int action_start_cheat_num_passes(unsigned type, const char *label)
static int action_start_core_setting(unsigned type, static int action_start_core_setting(unsigned type,
const char *label) const char *label)
{ {
unsigned idx = type - MENU_SETTINGS_CORE_OPTION_START; unsigned idx = type - MENU_SETTINGS_CORE_OPTION_START;
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
if (system) if (system)
core_option_set_default(system->core_options, idx); core_option_set_default(system->core_options, idx);

View File

@ -1716,7 +1716,9 @@ static int menu_displaylist_parse_load_content_settings(menu_displaylist_info_t
if (global->inited.main && (global->inited.core.type != CORE_TYPE_DUMMY)) if (global->inited.main && (global->inited.core.type != CORE_TYPE_DUMMY))
{ {
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
menu_entries_push(info->list, menu_entries_push(info->list,
menu_hash_to_str(MENU_LABEL_VALUE_RESUME_CONTENT), menu_hash_to_str(MENU_LABEL_VALUE_RESUME_CONTENT),
@ -2019,9 +2021,11 @@ static int menu_displaylist_parse_options_remappings(menu_displaylist_info_t *in
{ {
unsigned p, retro_id; unsigned p, retro_id;
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
menu_handle_t *menu = menu_driver_get_ptr(); menu_handle_t *menu = menu_driver_get_ptr();
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
for (p = 0; p < settings->input.max_users; p++) for (p = 0; p < settings->input.max_users; p++)
{ {
char key_type[PATH_MAX_LENGTH], key_analog[PATH_MAX_LENGTH]; char key_type[PATH_MAX_LENGTH], key_analog[PATH_MAX_LENGTH];
@ -2406,7 +2410,9 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type)
menu_handle_t *menu = menu_driver_get_ptr(); menu_handle_t *menu = menu_driver_get_ptr();
global_t *global = global_get_ptr(); global_t *global = global_get_ptr();
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
if (menu_driver_list_push(info, type)) if (menu_driver_list_push(info, type))
return 0; return 0;

View File

@ -286,7 +286,9 @@ static void menu_driver_toggle(bool latch)
const menu_ctx_driver_t *menu_driver = menu_ctx_driver_get_ptr(); const menu_ctx_driver_t *menu_driver = menu_ctx_driver_get_ptr();
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
global_t *global = global_get_ptr(); global_t *global = global_get_ptr();
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
if (menu_driver->toggle) if (menu_driver->toggle)
menu_driver->toggle(menu_driver_data->userdata, latch); menu_driver->toggle(menu_driver_data->userdata, latch);

View File

@ -458,11 +458,13 @@ bool menu_entries_show_back(void)
* (shown at the top of the UI). */ * (shown at the top of the UI). */
int menu_entries_get_core_title(char *s, size_t len) int menu_entries_get_core_title(char *s, size_t len)
{ {
rarch_system_info_t *info = NULL;
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
rarch_system_info_t *info = rarch_system_info_get_ptr();
const char *core_name = g_system_menu.library_name; const char *core_name = g_system_menu.library_name;
const char *core_version = g_system_menu.library_version; const char *core_version = g_system_menu.library_version;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &info);
if (!settings->menu.core_enable) if (!settings->menu.core_enable)
return -1; return -1;

View File

@ -972,10 +972,12 @@ static void setting_get_string_representation_uint_libretro_device(void *data,
{ {
unsigned index_offset; unsigned index_offset;
const struct retro_controller_description *desc = NULL; const struct retro_controller_description *desc = NULL;
const char *name = NULL; const char *name = NULL;
rarch_setting_t *setting = (rarch_setting_t*)data; rarch_setting_t *setting = (rarch_setting_t*)data;
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
if (!setting) if (!setting)
return; return;
@ -2183,7 +2185,9 @@ static int setting_action_start_libretro_device_type(void *data)
const struct retro_controller_info *desc = NULL; const struct retro_controller_info *desc = NULL;
rarch_setting_t *setting = (rarch_setting_t*)data; rarch_setting_t *setting = (rarch_setting_t*)data;
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
if (setting_generic_action_start_default(setting) != 0) if (setting_generic_action_start_default(setting) != 0)
return -1; return -1;
@ -2326,9 +2330,11 @@ static int setting_action_left_libretro_device_type(
unsigned current_device, current_idx, i, devices[128], unsigned current_device, current_idx, i, devices[128],
types = 0, port = 0; types = 0, port = 0;
const struct retro_controller_info *desc = NULL; const struct retro_controller_info *desc = NULL;
rarch_setting_t *setting = (rarch_setting_t*)data; rarch_setting_t *setting = (rarch_setting_t*)data;
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
if (!setting) if (!setting)
return -1; return -1;
@ -2384,9 +2390,11 @@ static int setting_action_right_libretro_device_type(
unsigned current_device, current_idx, i, devices[128], unsigned current_device, current_idx, i, devices[128],
types = 0, port = 0; types = 0, port = 0;
const struct retro_controller_info *desc = NULL; const struct retro_controller_info *desc = NULL;
rarch_setting_t *setting = (rarch_setting_t*)data; rarch_setting_t *setting = (rarch_setting_t*)data;
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
if (!setting) if (!setting)
return -1; return -1;
@ -2756,10 +2764,12 @@ void general_write_handler(void *data)
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
global_t *global = global_get_ptr(); global_t *global = global_get_ptr();
file_list_t *menu_stack = menu_entries_get_menu_stack_ptr(0); file_list_t *menu_stack = menu_entries_get_menu_stack_ptr(0);
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
uint32_t hash = setting ? menu_hash_calculate(setting->name) : 0; uint32_t hash = setting ? menu_hash_calculate(setting->name) : 0;
uint64_t flags = menu_setting_get_flags(setting); uint64_t flags = menu_setting_get_flags(setting);
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
if (!setting) if (!setting)
return; return;
@ -3005,7 +3015,9 @@ static bool setting_append_list_input_player_options(
global_t *global = global_get_ptr(); global_t *global = global_get_ptr();
const struct retro_keybind* const defaults = const struct retro_keybind* const defaults =
(user == 0) ? retro_keybinds_1 : retro_keybinds_rest; (user == 0) ? retro_keybinds_1 : retro_keybinds_rest;
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
snprintf(buffer[user], sizeof(buffer[user]), snprintf(buffer[user], sizeof(buffer[user]),
"%s %u", menu_hash_to_str(MENU_VALUE_USER), user + 1); "%s %u", menu_hash_to_str(MENU_VALUE_USER), user + 1);

View File

@ -888,10 +888,15 @@ static uint32_t implementation_magic_value(void)
{ {
size_t i, len; size_t i, len;
uint32_t res = 0; uint32_t res = 0;
rarch_system_info_t *info = NULL;
const char *lib = NULL;
const char *ver = PACKAGE_VERSION; const char *ver = PACKAGE_VERSION;
unsigned api = core.retro_api_version(); unsigned api = core.retro_api_version();
rarch_system_info_t *info = rarch_system_info_get_ptr();
const char *lib = info ? info->info.library_name : NULL; runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &info);
if (info)
lib = info->info.library_name;
res |= api; res |= api;

View File

@ -352,14 +352,17 @@ const char *rarch_get_current_savefile_dir(void)
static void set_paths_redirect(const char *path) static void set_paths_redirect(const char *path)
{ {
uint32_t global_library_name_hash = 0;
bool check_global_library_name_hash = false; bool check_global_library_name_hash = false;
global_t *global = global_get_ptr(); global_t *global = global_get_ptr();
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
rarch_system_info_t *info = rarch_system_info_get_ptr(); rarch_system_info_t *info = NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &info);
uint32_t global_library_name_hash = ((global && info->info.library_name && if (global && info->info.library_name &&
(info->info.library_name[0] != '\0')) (info->info.library_name[0] != '\0'))
? msg_hash_calculate(info->info.library_name) : 0); global_library_name_hash = msg_hash_calculate(info->info.library_name);
/* Initialize current save directories with the values from the config */ /* Initialize current save directories with the values from the config */
strlcpy(current_savefile_dir, strlcpy(current_savefile_dir,
@ -971,7 +974,9 @@ static void parse_input(int argc, char *argv[])
static void rarch_init_savefile_paths(void) static void rarch_init_savefile_paths(void)
{ {
global_t *global = global_get_ptr(); global_t *global = global_get_ptr();
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
event_command(EVENT_CMD_SAVEFILES_DEINIT); event_command(EVENT_CMD_SAVEFILES_DEINIT);

110
runloop.c
View File

@ -70,7 +70,6 @@
#define DEFAULT_EXT "" #define DEFAULT_EXT ""
#endif #endif
static rarch_system_info_t g_system;
#ifdef HAVE_MENU #ifdef HAVE_MENU
struct retro_system_info g_system_menu; struct retro_system_info g_system_menu;
@ -93,10 +92,6 @@ global_t *global_get_ptr(void)
return &g_extern; return &g_extern;
} }
rarch_system_info_t *rarch_system_info_get_ptr(void)
{
return &g_system;
}
const char *runloop_msg_queue_pull(void) const char *runloop_msg_queue_pull(void)
{ {
@ -413,16 +408,17 @@ static void check_shader_dir(bool pressed_next, bool pressed_prev)
**/ **/
static bool rarch_game_specific_options(char **output) static bool rarch_game_specific_options(char **output)
{ {
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
global_t *global = global_get_ptr(); global_t *global = global_get_ptr();
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
const char *core_name = NULL; const char *core_name = NULL;
const char *game_name = NULL; const char *game_name = NULL;
config_file_t *option_file = NULL; config_file_t *option_file = NULL;
char game_path[PATH_MAX_LENGTH] = {0}; char game_path[PATH_MAX_LENGTH] = {0};
char config_directory[PATH_MAX_LENGTH] = {0}; char config_directory[PATH_MAX_LENGTH] = {0};
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
core_name = system ? system->info.library_name : NULL; core_name = system ? system->info.library_name : NULL;
game_name = global ? path_basename(global->name.base) : NULL; game_name = global ? path_basename(global->name.base) : NULL;
@ -472,6 +468,7 @@ static void runloop_data_clear_state(void)
bool runloop_ctl(enum runloop_ctl_state state, void *data) bool runloop_ctl(enum runloop_ctl_state state, void *data)
{ {
static char runloop_fullpath[PATH_MAX_LENGTH]; static char runloop_fullpath[PATH_MAX_LENGTH];
static rarch_system_info_t runloop_system;
static unsigned runloop_max_frames = false; static unsigned runloop_max_frames = false;
static bool runloop_frame_time_last = false; static bool runloop_frame_time_last = false;
static bool runloop_set_frame_limit = false; static bool runloop_set_frame_limit = false;
@ -487,7 +484,6 @@ bool runloop_ctl(enum runloop_ctl_state state, void *data)
static slock_t *runloop_msg_queue_lock = NULL; static slock_t *runloop_msg_queue_lock = NULL;
#endif #endif
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
rarch_system_info_t *system = rarch_system_info_get_ptr();
switch (state) switch (state)
{ {
@ -497,54 +493,62 @@ bool runloop_ctl(enum runloop_ctl_state state, void *data)
case RUNLOOP_CTL_SHADER_DIR_INIT: case RUNLOOP_CTL_SHADER_DIR_INIT:
return shader_dir_init(); return shader_dir_init();
case RUNLOOP_CTL_SYSTEM_INFO_INIT: case RUNLOOP_CTL_SYSTEM_INFO_INIT:
core.retro_get_system_info(&system->info); core.retro_get_system_info(&runloop_system.info);
if (!system->info.library_name) if (!runloop_system.info.library_name)
system->info.library_name = msg_hash_to_str(MSG_UNKNOWN); runloop_system.info.library_name = msg_hash_to_str(MSG_UNKNOWN);
if (!system->info.library_version) if (!runloop_system.info.library_version)
system->info.library_version = "v0"; runloop_system.info.library_version = "v0";
#ifndef RARCH_CONSOLE #ifndef RARCH_CONSOLE
strlcpy(system->title_buf, strlcpy(runloop_system.title_buf,
msg_hash_to_str(MSG_PROGRAM), sizeof(system->title_buf)); msg_hash_to_str(MSG_PROGRAM), sizeof(runloop_system.title_buf));
strlcat(system->title_buf, " : ", sizeof(system->title_buf)); strlcat(runloop_system.title_buf, " : ", sizeof(runloop_system.title_buf));
#endif #endif
strlcat(system->title_buf, system->info.library_name, sizeof(system->title_buf)); strlcat(runloop_system.title_buf, runloop_system.info.library_name, sizeof(runloop_system.title_buf));
strlcat(system->title_buf, " ", sizeof(system->title_buf)); strlcat(runloop_system.title_buf, " ", sizeof(runloop_system.title_buf));
strlcat(system->title_buf, system->info.library_version, sizeof(system->title_buf)); strlcat(runloop_system.title_buf, runloop_system.info.library_version, sizeof(runloop_system.title_buf));
strlcpy(system->valid_extensions, system->info.valid_extensions ? strlcpy(runloop_system.valid_extensions, runloop_system.info.valid_extensions ?
system->info.valid_extensions : DEFAULT_EXT, runloop_system.info.valid_extensions : DEFAULT_EXT,
sizeof(system->valid_extensions)); sizeof(runloop_system.valid_extensions));
system->block_extract = system->info.block_extract; runloop_system.block_extract = runloop_system.info.block_extract;
break; break;
case RUNLOOP_CTL_GET_CORE_OPTION_SIZE: case RUNLOOP_CTL_GET_CORE_OPTION_SIZE:
{ {
unsigned *idx = (unsigned*)data; unsigned *idx = (unsigned*)data;
if (!idx) if (!idx)
return false; return false;
*idx = core_option_size(system->core_options); *idx = core_option_size(runloop_system.core_options);
} }
return true; return true;
case RUNLOOP_CTL_HAS_CORE_OPTIONS: case RUNLOOP_CTL_HAS_CORE_OPTIONS:
return system && system->core_options; return runloop_system.core_options;
case RUNLOOP_CTL_SYSTEM_INFO_FREE: case RUNLOOP_CTL_SYSTEM_INFO_GET:
if (system->core_options)
{ {
core_option_flush(system->core_options); rarch_system_info_t **system = (rarch_system_info_t**)data;
core_option_free(system->core_options); if (!system)
return false;
*system = &runloop_system;
}
return true;
case RUNLOOP_CTL_SYSTEM_INFO_FREE:
if (runloop_system.core_options)
{
core_option_flush(runloop_system.core_options);
core_option_free(runloop_system.core_options);
} }
system->core_options = NULL; runloop_system.core_options = NULL;
/* No longer valid. */ /* No longer valid. */
if (system->special) if (runloop_system.special)
free(system->special); free(runloop_system.special);
system->special = NULL; runloop_system.special = NULL;
if (system->ports) if (runloop_system.ports)
free(system->ports); free(runloop_system.ports);
system->ports = NULL; runloop_system.ports = NULL;
memset(&g_system, 0, sizeof(rarch_system_info_t)); memset(&runloop_system, 0, sizeof(rarch_system_info_t));
break; break;
case RUNLOOP_CTL_IS_FRAME_COUNT_END: case RUNLOOP_CTL_IS_FRAME_COUNT_END:
{ {
@ -998,14 +1002,14 @@ bool runloop_ctl(enum runloop_ctl_state state, void *data)
rarch_task_deinit(); rarch_task_deinit();
break; break;
case RUNLOOP_CTL_IS_CORE_OPTION_UPDATED: case RUNLOOP_CTL_IS_CORE_OPTION_UPDATED:
return system->core_options ? return runloop_system.core_options ?
core_option_updated(system->core_options) : false; core_option_updated(runloop_system.core_options) : false;
case RUNLOOP_CTL_CORE_OPTION_PREV: case RUNLOOP_CTL_CORE_OPTION_PREV:
{ {
unsigned *idx = (unsigned*)data; unsigned *idx = (unsigned*)data;
if (!idx) if (!idx)
return false; return false;
core_option_prev(system->core_options, *idx); core_option_prev(runloop_system.core_options, *idx);
if (ui_companion_is_on_foreground()) if (ui_companion_is_on_foreground())
ui_companion_driver_notify_refresh(); ui_companion_driver_notify_refresh();
} }
@ -1015,7 +1019,7 @@ bool runloop_ctl(enum runloop_ctl_state state, void *data)
unsigned *idx = (unsigned*)data; unsigned *idx = (unsigned*)data;
if (!idx) if (!idx)
return false; return false;
core_option_next(system->core_options, *idx); core_option_next(runloop_system.core_options, *idx);
if (ui_companion_is_on_foreground()) if (ui_companion_is_on_foreground())
ui_companion_driver_notify_refresh(); ui_companion_driver_notify_refresh();
} }
@ -1024,11 +1028,11 @@ bool runloop_ctl(enum runloop_ctl_state state, void *data)
{ {
struct retro_variable *var = (struct retro_variable*)data; struct retro_variable *var = (struct retro_variable*)data;
if (!system || !system->core_options || !var) if (!runloop_system.core_options || !var)
return false; return false;
RARCH_LOG("Environ GET_VARIABLE %s:\n", var->key); RARCH_LOG("Environ GET_VARIABLE %s:\n", var->key);
core_option_get(system->core_options, var); core_option_get(runloop_system.core_options, var);
RARCH_LOG("\t%s\n", var->value ? var->value : "N/A"); RARCH_LOG("\t%s\n", var->value ? var->value : "N/A");
} }
return true; return true;
@ -1054,22 +1058,22 @@ bool runloop_ctl(enum runloop_ctl_state state, void *data)
if(ret) if(ret)
{ {
system->core_options = core_option_new(game_options_path, vars); runloop_system.core_options = core_option_new(game_options_path, vars);
free(game_options_path); free(game_options_path);
} }
else else
system->core_options = core_option_new(options_path, vars); runloop_system.core_options = core_option_new(options_path, vars);
} }
break; break;
case RUNLOOP_CTL_CORE_OPTIONS_DEINIT: case RUNLOOP_CTL_CORE_OPTIONS_DEINIT:
if (!system->core_options) if (!runloop_system.core_options)
return false; return false;
core_option_flush(system->core_options); core_option_flush(runloop_system.core_options);
core_option_free(system->core_options); core_option_free(runloop_system.core_options);
system->core_options = NULL; runloop_system.core_options = NULL;
return true; return true;
case RUNLOOP_CTL_NONE: case RUNLOOP_CTL_NONE:
default: default:
@ -1174,12 +1178,14 @@ int runloop_iterate(unsigned *sleep_ms)
static retro_input_t last_input = 0; static retro_input_t last_input = 0;
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
global_t *global = global_get_ptr(); global_t *global = global_get_ptr();
rarch_system_info_t *system = rarch_system_info_get_ptr(); rarch_system_info_t *system = NULL;
cmd.state[1] = last_input; cmd.state[1] = last_input;
cmd.state[0] = input_keys_pressed(); cmd.state[0] = input_keys_pressed();
last_input = cmd.state[0]; last_input = cmd.state[0];
runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system);
if (runloop_ctl(RUNLOOP_CTL_IS_FRAME_TIME_LAST, NULL)) if (runloop_ctl(RUNLOOP_CTL_IS_FRAME_TIME_LAST, NULL))
{ {
frame_time_last = 0; frame_time_last = 0;

View File

@ -100,6 +100,7 @@ enum runloop_ctl_state
RUNLOOP_CTL_CORE_OPTIONS_DEINIT, RUNLOOP_CTL_CORE_OPTIONS_DEINIT,
RUNLOOP_CTL_SHADER_DIR_DEINIT, RUNLOOP_CTL_SHADER_DIR_DEINIT,
RUNLOOP_CTL_SHADER_DIR_INIT, RUNLOOP_CTL_SHADER_DIR_INIT,
RUNLOOP_CTL_SYSTEM_INFO_GET,
RUNLOOP_CTL_SYSTEM_INFO_INIT, RUNLOOP_CTL_SYSTEM_INFO_INIT,
RUNLOOP_CTL_SYSTEM_INFO_FREE, RUNLOOP_CTL_SYSTEM_INFO_FREE,
RUNLOOP_CTL_PREPARE_DUMMY RUNLOOP_CTL_PREPARE_DUMMY

View File

@ -67,8 +67,6 @@ typedef struct rarch_system_info
extern struct retro_system_info g_system_menu; extern struct retro_system_info g_system_menu;
#endif #endif
rarch_system_info_t *rarch_system_info_get_ptr(void);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif