(dynamic.c) Use rarch_system_info_get_ptr

This commit is contained in:
twinaphex 2015-06-25 12:57:54 +02:00
parent bee3c5f11d
commit fa8bbabce7

121
dynamic.c
View file

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