diff --git a/dynamic.c b/dynamic.c index c000ba9f98..b043e70b41 100644 --- a/dynamic.c +++ b/dynamic.c @@ -514,8 +514,9 @@ void init_libretro_sym(enum rarch_core_type type) **/ void uninit_libretro_sym(void) { - driver_t *driver = driver_get_ptr(); - global_t *global = global_get_ptr(); + driver_t *driver = driver_get_ptr(); + global_t *global = global_get_ptr(); + rarch_system_info_t *system = rarch_system_info_get_ptr(); #ifdef HAVE_DYNAMIC if (lib_handle) @@ -523,15 +524,15 @@ void uninit_libretro_sym(void) lib_handle = NULL; #endif - if (global->system.core_options) + if (system->core_options) { - core_option_flush(global->system.core_options); - core_option_free(global->system.core_options); + core_option_flush(system->core_options); + core_option_free(system->core_options); } /* No longer valid. */ - free(global->system.special); - free(global->system.ports); + free(system->special); + free(system->ports); memset(&global->system, 0, sizeof(global->system)); driver->camera_active = false; driver->location_active = false; @@ -592,6 +593,7 @@ bool rarch_environment_cb(unsigned cmd, void *data) driver_t *driver = driver_get_ptr(); settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); + rarch_system_info_t *system = rarch_system_info_get_ptr(); if (ignore_environment_cb) return false; @@ -614,8 +616,8 @@ bool rarch_environment_cb(unsigned cmd, void *data) struct retro_variable *var = (struct retro_variable*)data; RARCH_LOG("Environ GET_VARIABLE %s:\n", var->key); - if (global->system.core_options) - core_option_get(global->system.core_options, var); + if (system && system->core_options) + core_option_get(system->core_options, var); else var->value = NULL; @@ -624,18 +626,18 @@ bool rarch_environment_cb(unsigned cmd, void *data) } case RETRO_ENVIRONMENT_GET_VARIABLE_UPDATE: - *(bool*)data = global->system.core_options ? - core_option_updated(global->system.core_options) : false; + *(bool*)data = system->core_options ? + core_option_updated(system->core_options) : false; break; case RETRO_ENVIRONMENT_SET_VARIABLES: { RARCH_LOG("Environ SET_VARIABLES.\n"); - if (global->system.core_options) + if (system && system->core_options) { - core_option_flush(global->system.core_options); - core_option_free(global->system.core_options); + core_option_flush(system->core_options); + core_option_free(system->core_options); } { @@ -649,7 +651,8 @@ bool rarch_environment_cb(unsigned cmd, void *data) "retroarch-core-options.cfg", sizeof(buf)); options_path = buf; } - global->system.core_options = core_option_new(options_path, vars); + + system->core_options = core_option_new(options_path, vars); } break; @@ -670,7 +673,7 @@ bool rarch_environment_cb(unsigned cmd, void *data) if (!settings->video.allow_rotate) break; - global->system.rotation = rotation; + system->rotation = rotation; if (!video_driver_set_rotation(rotation)) return false; @@ -679,14 +682,14 @@ bool rarch_environment_cb(unsigned cmd, void *data) case RETRO_ENVIRONMENT_SHUTDOWN: RARCH_LOG("Environ SHUTDOWN.\n"); - global->system.shutdown = true; + system->shutdown = true; global->core_shutdown_initiated = true; break; case RETRO_ENVIRONMENT_SET_PERFORMANCE_LEVEL: - global->system.performance_level = *(const unsigned*)data; + system->performance_level = *(const unsigned*)data; RARCH_LOG("Environ PERFORMANCE_LEVEL: %u.\n", - global->system.performance_level); + system->performance_level); break; case RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY: @@ -746,8 +749,8 @@ bool rarch_environment_cb(unsigned cmd, void *data) unsigned retro_id, retro_port; const struct retro_input_descriptor *desc = NULL; - memset(global->system.input_desc_btn, 0, - sizeof(global->system.input_desc_btn)); + memset(system->input_desc_btn, 0, + sizeof(system->input_desc_btn)); desc = (const struct retro_input_descriptor*)data; @@ -775,12 +778,12 @@ bool rarch_environment_cb(unsigned cmd, void *data) switch (desc->index) { case RETRO_DEVICE_INDEX_ANALOG_LEFT: - global->system.input_desc_btn[retro_port][RARCH_ANALOG_LEFT_X_PLUS] = desc->description; - global->system.input_desc_btn[retro_port][RARCH_ANALOG_LEFT_X_MINUS] = desc->description; + system->input_desc_btn[retro_port][RARCH_ANALOG_LEFT_X_PLUS] = desc->description; + system->input_desc_btn[retro_port][RARCH_ANALOG_LEFT_X_MINUS] = desc->description; break; case RETRO_DEVICE_INDEX_ANALOG_RIGHT: - global->system.input_desc_btn[retro_port][RARCH_ANALOG_RIGHT_X_PLUS] = desc->description; - global->system.input_desc_btn[retro_port][RARCH_ANALOG_RIGHT_X_MINUS] = desc->description; + system->input_desc_btn[retro_port][RARCH_ANALOG_RIGHT_X_PLUS] = desc->description; + system->input_desc_btn[retro_port][RARCH_ANALOG_RIGHT_X_MINUS] = desc->description; break; } break; @@ -788,19 +791,19 @@ bool rarch_environment_cb(unsigned cmd, void *data) switch (desc->index) { case RETRO_DEVICE_INDEX_ANALOG_LEFT: - global->system.input_desc_btn[retro_port][RARCH_ANALOG_LEFT_Y_PLUS] = desc->description; - global->system.input_desc_btn[retro_port][RARCH_ANALOG_LEFT_Y_MINUS] = desc->description; + system->input_desc_btn[retro_port][RARCH_ANALOG_LEFT_Y_PLUS] = desc->description; + system->input_desc_btn[retro_port][RARCH_ANALOG_LEFT_Y_MINUS] = desc->description; break; case RETRO_DEVICE_INDEX_ANALOG_RIGHT: - global->system.input_desc_btn[retro_port][RARCH_ANALOG_RIGHT_Y_PLUS] = desc->description; - global->system.input_desc_btn[retro_port][RARCH_ANALOG_RIGHT_Y_MINUS] = desc->description; + system->input_desc_btn[retro_port][RARCH_ANALOG_RIGHT_Y_PLUS] = desc->description; + system->input_desc_btn[retro_port][RARCH_ANALOG_RIGHT_Y_MINUS] = desc->description; break; } break; } } else - global->system.input_desc_btn[retro_port][retro_id] = desc->description; + system->input_desc_btn[retro_port][retro_id] = desc->description; } static const char *libretro_btn_desc[] = { @@ -815,7 +818,7 @@ bool rarch_environment_cb(unsigned cmd, void *data) { for (retro_id = 0; retro_id < RARCH_FIRST_CUSTOM_BIND; retro_id++) { - const char *description = global->system.input_desc_btn[p][retro_id]; + const char *description = system->input_desc_btn[p][retro_id]; if (!description) continue; @@ -836,14 +839,14 @@ bool rarch_environment_cb(unsigned cmd, void *data) (const struct retro_keyboard_callback*)data; RARCH_LOG("Environ SET_KEYBOARD_CALLBACK.\n"); - global->system.key_event = info->callback; - global->frontend_key_event = global->system.key_event; + system->key_event = info->callback; + global->frontend_key_event = system->key_event; break; } case RETRO_ENVIRONMENT_SET_DISK_CONTROL_INTERFACE: RARCH_LOG("Environ SET_DISK_CONTROL_INTERFACE.\n"); - global->system.disk_control = + system->disk_control = *(const struct retro_disk_control_callback*)data; break; @@ -923,7 +926,7 @@ bool rarch_environment_cb(unsigned cmd, void *data) { bool state = *(const bool*)data; RARCH_LOG("Environ SET_SUPPORT_NO_GAME: %s.\n", state ? "yes" : "no"); - global->system.no_content = state; + system->no_content = state; break; } @@ -975,7 +978,7 @@ bool rarch_environment_cb(unsigned cmd, void *data) return false; #endif - global->system.frame_time = *info; + system->frame_time = *info; break; } @@ -1019,9 +1022,9 @@ bool rarch_environment_cb(unsigned cmd, void *data) (struct retro_camera_callback*)data; RARCH_LOG("Environ GET_CAMERA_INTERFACE.\n"); - cb->start = driver_camera_start; - cb->stop = driver_camera_stop; - global->system.camera_callback = *cb; + cb->start = driver_camera_start; + cb->stop = driver_camera_stop; + system->camera_callback = *cb; driver->camera_active = cb->caps != 0; break; } @@ -1032,12 +1035,12 @@ bool rarch_environment_cb(unsigned cmd, void *data) (struct retro_location_callback*)data; RARCH_LOG("Environ GET_LOCATION_INTERFACE.\n"); - cb->start = driver_location_start; - cb->stop = driver_location_stop; - cb->get_position = driver_location_get_position; - cb->set_interval = driver_location_set_interval; - global->system.location_callback = *cb; - driver->location_active = true; + cb->start = driver_location_start; + cb->stop = driver_location_stop; + cb->get_position = driver_location_get_position; + cb->set_interval = driver_location_set_interval; + system->location_callback = *cb; + driver->location_active = true; break; } @@ -1105,16 +1108,16 @@ bool rarch_environment_cb(unsigned cmd, void *data) } } - free(global->system.special); - global->system.special = (struct retro_subsystem_info*) - calloc(i, sizeof(*global->system.special)); + free(system->special); + system->special = (struct retro_subsystem_info*) + calloc(i, sizeof(*system->special)); - if (!global->system.special) + if (!system->special) return false; - memcpy(global->system.special, info, - i * sizeof(*global->system.special)); - global->system.num_special = i; + memcpy(system->special, info, + i * sizeof(*system->special)); + system->num_special = i; break; } @@ -1134,15 +1137,15 @@ bool rarch_environment_cb(unsigned cmd, void *data) info[i].types[j].id); } - free(global->system.ports); - global->system.ports = (struct retro_controller_info*) - calloc(i, sizeof(*global->system.ports)); - if (!global->system.ports) + free(system->ports); + system->ports = (struct retro_controller_info*) + calloc(i, sizeof(*system->ports)); + if (!system->ports) return false; - memcpy(global->system.ports, info, - i * sizeof(*global->system.ports)); - global->system.num_ports = i; + memcpy(system->ports, info, + i * sizeof(*system->ports)); + system->num_ports = i; break; }