Start getting rid of g_settings global

This commit is contained in:
twinaphex 2015-03-20 19:57:16 +01:00
parent 6cefa69aa4
commit a6b9c63d26

View File

@ -264,11 +264,12 @@ void setting_data_get_string_representation(void *data,
static int setting_data_action_start_savestates(void *data) static int setting_data_action_start_savestates(void *data)
{ {
rarch_setting_t *setting = (rarch_setting_t*)data; rarch_setting_t *setting = (rarch_setting_t*)data;
settings_t *settings = config_get_ptr();
if (!setting) if (!setting)
return -1; return -1;
g_settings.state_slot = 0; settings->state_slot = 0;
return 0; return 0;
} }
@ -276,11 +277,12 @@ static int setting_data_action_start_savestates(void *data)
static int setting_data_action_start_bind_device(void *data) static int setting_data_action_start_bind_device(void *data)
{ {
rarch_setting_t *setting = (rarch_setting_t*)data; rarch_setting_t *setting = (rarch_setting_t*)data;
settings_t *settings = config_get_ptr();
if (!setting) if (!setting)
return -1; return -1;
g_settings.input.joypad_map[setting->index_offset] = setting->index_offset; settings->input.joypad_map[setting->index_offset] = setting->index_offset;
return 0; return 0;
} }
@ -337,6 +339,7 @@ static int setting_data_action_start_libretro_device_type(void *data)
unsigned current_device, i, devices[128], types = 0, port = 0; unsigned current_device, i, devices[128], 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();
if (!setting) if (!setting)
return -1; return -1;
@ -367,11 +370,11 @@ static int setting_data_action_start_libretro_device_type(void *data)
} }
} }
current_device = g_settings.input.libretro_device[port]; current_device = settings->input.libretro_device[port];
current_device = RETRO_DEVICE_JOYPAD; current_device = RETRO_DEVICE_JOYPAD;
g_settings.input.libretro_device[port] = current_device; settings->input.libretro_device[port] = current_device;
pretro_set_controller_port_device(port, current_device); pretro_set_controller_port_device(port, current_device);
return 0; return 0;
@ -478,7 +481,8 @@ static int setting_data_action_toggle_analog_dpad_mode(void *data,
unsigned action, bool wraparound) unsigned action, bool wraparound)
{ {
unsigned port = 0; unsigned port = 0;
rarch_setting_t *setting = (rarch_setting_t*)data; rarch_setting_t *setting = (rarch_setting_t*)data;
settings_t *settings = config_get_ptr();
if (!setting) if (!setting)
return -1; return -1;
@ -488,14 +492,14 @@ static int setting_data_action_toggle_analog_dpad_mode(void *data,
switch (action) switch (action)
{ {
case MENU_ACTION_RIGHT: case MENU_ACTION_RIGHT:
g_settings.input.analog_dpad_mode[port] = settings->input.analog_dpad_mode[port] =
(g_settings.input.analog_dpad_mode[port] + 1) (settings->input.analog_dpad_mode[port] + 1)
% ANALOG_DPAD_LAST; % ANALOG_DPAD_LAST;
break; break;
case MENU_ACTION_LEFT: case MENU_ACTION_LEFT:
g_settings.input.analog_dpad_mode[port] = settings->input.analog_dpad_mode[port] =
(g_settings.input.analog_dpad_mode (settings->input.analog_dpad_mode
[port] + ANALOG_DPAD_LAST - 1) % ANALOG_DPAD_LAST; [port] + ANALOG_DPAD_LAST - 1) % ANALOG_DPAD_LAST;
break; break;
} }
@ -520,7 +524,8 @@ static int setting_data_action_toggle_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();
if (!setting) if (!setting)
return -1; return -1;
@ -549,7 +554,7 @@ static int setting_data_action_toggle_libretro_device_type(
} }
} }
current_device = g_settings.input.libretro_device[port]; current_device = settings->input.libretro_device[port];
current_idx = 0; current_idx = 0;
for (i = 0; i < types; i++) for (i = 0; i < types; i++)
{ {
@ -566,7 +571,7 @@ static int setting_data_action_toggle_libretro_device_type(
current_device = devices current_device = devices
[(current_idx + types - 1) % types]; [(current_idx + types - 1) % types];
g_settings.input.libretro_device[port] = current_device; settings->input.libretro_device[port] = current_device;
pretro_set_controller_port_device(port, current_device); pretro_set_controller_port_device(port, current_device);
break; break;
@ -574,7 +579,7 @@ static int setting_data_action_toggle_libretro_device_type(
current_device = devices current_device = devices
[(current_idx + 1) % types]; [(current_idx + 1) % types];
g_settings.input.libretro_device[port] = current_device; settings->input.libretro_device[port] = current_device;
pretro_set_controller_port_device(port, current_device); pretro_set_controller_port_device(port, current_device);
break; break;
} }
@ -596,7 +601,8 @@ static int setting_data_action_toggle_libretro_device_type(
static int setting_data_action_toggle_savestates( static int setting_data_action_toggle_savestates(
void *data, unsigned action, bool wraparound) void *data, unsigned action, bool wraparound)
{ {
rarch_setting_t *setting = (rarch_setting_t*)data; rarch_setting_t *setting = (rarch_setting_t*)data;
settings_t *settings = config_get_ptr();
if (!setting) if (!setting)
return -1; return -1;
@ -605,11 +611,11 @@ static int setting_data_action_toggle_savestates(
{ {
case MENU_ACTION_LEFT: case MENU_ACTION_LEFT:
/* Slot -1 is (auto) slot. */ /* Slot -1 is (auto) slot. */
if (g_settings.state_slot >= 0) if (settings->state_slot >= 0)
g_settings.state_slot--; settings->state_slot--;
break; break;
case MENU_ACTION_RIGHT: case MENU_ACTION_RIGHT:
g_settings.state_slot++; settings->state_slot++;
break; break;
} }
@ -631,23 +637,24 @@ static int setting_data_action_toggle_bind_device(void *data,
unsigned action, bool wraparound) unsigned action, bool wraparound)
{ {
unsigned *p = NULL; unsigned *p = NULL;
rarch_setting_t *setting = (rarch_setting_t*)data; rarch_setting_t *setting = (rarch_setting_t*)data;
settings_t *settings = config_get_ptr();
if (!setting) if (!setting)
return -1; return -1;
p = &g_settings.input.joypad_map[setting->index_offset]; p = &settings->input.joypad_map[setting->index_offset];
switch (action) switch (action)
{ {
case MENU_ACTION_LEFT: case MENU_ACTION_LEFT:
if ((*p) >= g_settings.input.max_users) if ((*p) >= settings->input.max_users)
*p = g_settings.input.max_users - 1; *p = settings->input.max_users - 1;
else if ((*p) > 0) else if ((*p) > 0)
(*p)--; (*p)--;
break; break;
case MENU_ACTION_RIGHT: case MENU_ACTION_RIGHT:
if (*p < g_settings.input.max_users) if (*p < settings->input.max_users)
(*p)++; (*p)++;
break; break;
} }
@ -782,16 +789,17 @@ static int setting_data_string_action_toggle_driver(void *data,
static int core_list_action_toggle(void *data, unsigned action, bool wraparound) static int core_list_action_toggle(void *data, unsigned action, bool wraparound)
{ {
rarch_setting_t *setting = (rarch_setting_t *)data; rarch_setting_t *setting = (rarch_setting_t *)data;
settings_t *settings = config_get_ptr();
if (!setting) if (!setting)
return -1; return -1;
/* If the user CANCELs the browse, then g_settings.libretro is now /* If the user CANCELs the browse, then settings->libretro is now
* set to a directory, which is very bad and will cause a crash * set to a directory, which is very bad and will cause a crash
* later on. I need to be able to add something to call when a * later on. I need to be able to add something to call when a
* cancel happens. * cancel happens.
*/ */
strlcpy(setting->value.string, g_settings.libretro_directory, setting->size); strlcpy(setting->value.string, settings->libretro_directory, setting->size);
return 0; return 0;
} }
@ -819,12 +827,13 @@ static void core_list_change_handler(void *data)
static int load_content_action_toggle(void *data, unsigned action, static int load_content_action_toggle(void *data, unsigned action,
bool wraparound) bool wraparound)
{ {
rarch_setting_t *setting = (rarch_setting_t *)data; rarch_setting_t *setting = (rarch_setting_t *)data;
settings_t *settings = config_get_ptr();
if (!setting) if (!setting)
return -1; return -1;
strlcpy(setting->value.string, g_settings.menu_content_directory, setting->size); strlcpy(setting->value.string, settings->menu_content_directory, setting->size);
if (g_extern.menu.info.valid_extensions) if (g_extern.menu.info.valid_extensions)
setting->values = g_extern.menu.info.valid_extensions; setting->values = g_extern.menu.info.valid_extensions;
@ -840,13 +849,14 @@ static int load_content_action_toggle(void *data, unsigned action,
static int setting_data_action_ok_bind_all(void *data, unsigned action) static int setting_data_action_ok_bind_all(void *data, unsigned action)
{ {
rarch_setting_t *setting = (rarch_setting_t*)data; rarch_setting_t *setting = (rarch_setting_t*)data;
menu_handle_t *menu = menu_driver_resolve(); menu_handle_t *menu = menu_driver_resolve();
settings_t *settings = config_get_ptr();
if (!setting || !menu) if (!setting || !menu)
return -1; return -1;
menu->binds.target = &g_settings.input.binds menu->binds.target = &settings->input.binds
[setting->index_offset][0]; [setting->index_offset][0];
menu->binds.begin = MENU_SETTINGS_BIND_BEGIN; menu->binds.begin = MENU_SETTINGS_BIND_BEGIN;
menu->binds.last = MENU_SETTINGS_BIND_LAST; menu->binds.last = MENU_SETTINGS_BIND_LAST;
@ -882,8 +892,9 @@ static int setting_data_action_ok_bind_defaults(void *data, unsigned action)
unsigned i; unsigned i;
struct retro_keybind *target = NULL; struct retro_keybind *target = NULL;
const struct retro_keybind *def_binds = NULL; const struct retro_keybind *def_binds = NULL;
rarch_setting_t *setting = (rarch_setting_t*)data; rarch_setting_t *setting = (rarch_setting_t*)data;
menu_handle_t *menu = menu_driver_resolve(); menu_handle_t *menu = menu_driver_resolve();
settings_t *settings = config_get_ptr();
if (!menu) if (!menu)
return -1; return -1;
@ -891,7 +902,7 @@ static int setting_data_action_ok_bind_defaults(void *data, unsigned action)
return -1; return -1;
target = (struct retro_keybind*) target = (struct retro_keybind*)
&g_settings.input.binds[setting->index_offset][0]; &settings->input.binds[setting->index_offset][0];
def_binds = (setting->index_offset) ? def_binds = (setting->index_offset) ?
retro_keybinds_rest : retro_keybinds_1; retro_keybinds_rest : retro_keybinds_1;
@ -1286,14 +1297,16 @@ static void setting_data_get_string_representation_uint_libretro_device(void *da
{ {
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();
if (!setting) if (!setting)
return; return;
if (setting->index_offset < g_extern.system.num_ports) if (setting->index_offset < g_extern.system.num_ports)
desc = libretro_find_controller_description( desc = libretro_find_controller_description(
&g_extern.system.ports[setting->index_offset], &g_extern.system.ports[setting->index_offset],
g_settings.input.libretro_device settings->input.libretro_device
[setting->index_offset]); [setting->index_offset]);
if (desc) if (desc)
@ -1303,7 +1316,7 @@ static void setting_data_get_string_representation_uint_libretro_device(void *da
{ {
/* Find generic name. */ /* Find generic name. */
switch (g_settings.input.libretro_device switch (settings->input.libretro_device
[setting->index_offset]) [setting->index_offset])
{ {
case RETRO_DEVICE_NONE: case RETRO_DEVICE_NONE:
@ -1328,10 +1341,11 @@ static void setting_data_get_string_representation_uint_archive_mode(void *data,
char *type_str, size_t type_str_size) char *type_str, size_t type_str_size)
{ {
const char *name = "Unknown"; const char *name = "Unknown";
settings_t *settings = config_get_ptr();
(void)data; (void)data;
switch (g_settings.archive.mode) switch (settings->archive.mode)
{ {
case 0: case 0:
name = "Ask"; name = "Ask";
@ -1355,13 +1369,14 @@ static void setting_data_get_string_representation_uint_analog_dpad_mode(void *d
"Left Analog", "Left Analog",
"Right Analog", "Right Analog",
}; };
rarch_setting_t *setting = (rarch_setting_t*)data; rarch_setting_t *setting = (rarch_setting_t*)data;
settings_t *settings = config_get_ptr();
if (!setting) if (!setting)
return; return;
(void)data; (void)data;
strlcpy(type_str, modes[g_settings.input.analog_dpad_mode strlcpy(type_str, modes[settings->input.analog_dpad_mode
[setting->index_offset] % ANALOG_DPAD_LAST], [setting->index_offset] % ANALOG_DPAD_LAST],
type_str_size); type_str_size);
} }
@ -1397,11 +1412,12 @@ static void setting_data_get_string_representation_uint_user_language(void *data
"Chinese (Traditional)", "Chinese (Traditional)",
"Chinese (Simplified)" "Chinese (Simplified)"
}; };
rarch_setting_t *setting = (rarch_setting_t*)data; rarch_setting_t *setting = (rarch_setting_t*)data;
settings_t *settings = config_get_ptr();
if (!setting) if (!setting)
return; return;
strlcpy(type_str, modes[g_settings.user_language], type_str_size); strlcpy(type_str, modes[settings->user_language], type_str_size);
} }
static void setting_data_get_string_representation_uint_libretro_log_level(void *data, static void setting_data_get_string_representation_uint_libretro_log_level(void *data,
@ -1919,9 +1935,11 @@ rarch_setting_t setting_data_string_setting_options(enum setting_type type,
int setting_data_get_description(const char *label, char *msg, int setting_data_get_description(const char *label, char *msg,
size_t sizeof_msg) size_t sizeof_msg)
{ {
settings_t *settings = config_get_ptr();
if (!strcmp(label, "input_driver")) if (!strcmp(label, "input_driver"))
{ {
if (!strcmp(g_settings.input.driver, "udev")) if (!strcmp(settings->input.driver, "udev"))
snprintf(msg, sizeof_msg, snprintf(msg, sizeof_msg,
" -- udev Input driver. \n" " -- udev Input driver. \n"
" \n" " \n"
@ -1940,7 +1958,7 @@ int setting_data_get_description(const char *label, char *msg,
"are root-only (mode 600). You can set up a udev \n" "are root-only (mode 600). You can set up a udev \n"
"rule which makes these accessible to non-root." "rule which makes these accessible to non-root."
); );
else if (!strcmp(g_settings.input.driver, "linuxraw")) else if (!strcmp(settings->input.driver, "linuxraw"))
snprintf(msg, sizeof_msg, snprintf(msg, sizeof_msg,
" -- linuxraw Input driver. \n" " -- linuxraw Input driver. \n"
" \n" " \n"
@ -2011,16 +2029,16 @@ int setting_data_get_description(const char *label, char *msg,
} }
else if (!strcmp(label, "audio_resampler_driver")) else if (!strcmp(label, "audio_resampler_driver"))
{ {
if (!strcmp(g_settings.audio.resampler, "sinc")) if (!strcmp(settings->audio.resampler, "sinc"))
snprintf(msg, sizeof_msg, snprintf(msg, sizeof_msg,
" -- Windowed SINC implementation."); " -- Windowed SINC implementation.");
else if (!strcmp(g_settings.audio.resampler, "CC")) else if (!strcmp(settings->audio.resampler, "CC"))
snprintf(msg, sizeof_msg, snprintf(msg, sizeof_msg,
" -- Convoluted Cosine implementation."); " -- Convoluted Cosine implementation.");
} }
else if (!strcmp(label, "video_driver")) else if (!strcmp(label, "video_driver"))
{ {
if (!strcmp(g_settings.video.driver, "gl")) if (!strcmp(settings->video.driver, "gl"))
snprintf(msg, sizeof_msg, snprintf(msg, sizeof_msg,
" -- OpenGL Video driver. \n" " -- OpenGL Video driver. \n"
" \n" " \n"
@ -2032,7 +2050,7 @@ int setting_data_get_description(const char *label, char *msg,
"libretro GL core implementations is \n" "libretro GL core implementations is \n"
"dependent on your graphics card's \n" "dependent on your graphics card's \n"
"underlying GL driver)."); "underlying GL driver).");
else if (!strcmp(g_settings.video.driver, "sdl2")) else if (!strcmp(settings->video.driver, "sdl2"))
snprintf(msg, sizeof_msg, snprintf(msg, sizeof_msg,
" -- SDL 2 Video driver.\n" " -- SDL 2 Video driver.\n"
" \n" " \n"
@ -2042,7 +2060,7 @@ int setting_data_get_description(const char *label, char *msg,
"Performance for software-rendered libretro \n" "Performance for software-rendered libretro \n"
"core implementations is dependent \n" "core implementations is dependent \n"
"on your platform SDL implementation."); "on your platform SDL implementation.");
else if (!strcmp(g_settings.video.driver, "sdl")) else if (!strcmp(settings->video.driver, "sdl"))
snprintf(msg, sizeof_msg, snprintf(msg, sizeof_msg,
" -- SDL Video driver.\n" " -- SDL Video driver.\n"
" \n" " \n"
@ -2051,14 +2069,14 @@ int setting_data_get_description(const char *label, char *msg,
" \n" " \n"
"Performance is considered to be suboptimal. \n" "Performance is considered to be suboptimal. \n"
"Consider using it only as a last resort."); "Consider using it only as a last resort.");
else if (!strcmp(g_settings.video.driver, "d3d")) else if (!strcmp(settings->video.driver, "d3d"))
snprintf(msg, sizeof_msg, snprintf(msg, sizeof_msg,
" -- Direct3D Video driver. \n" " -- Direct3D Video driver. \n"
" \n" " \n"
"Performance for software-rendered cores \n" "Performance for software-rendered cores \n"
"is dependent on your graphic card's \n" "is dependent on your graphic card's \n"
"underlying D3D driver)."); "underlying D3D driver).");
else if (!strcmp(g_settings.video.driver, "exynos")) else if (!strcmp(settings->video.driver, "exynos"))
snprintf(msg, sizeof_msg, snprintf(msg, sizeof_msg,
" -- Exynos-G2D Video Driver. \n" " -- Exynos-G2D Video Driver. \n"
" \n" " \n"
@ -2068,7 +2086,7 @@ int setting_data_get_description(const char *label, char *msg,
" \n" " \n"
"Performance for software rendered cores \n" "Performance for software rendered cores \n"
"should be optimal."); "should be optimal.");
else if (!strcmp(g_settings.video.driver, "sunxi")) else if (!strcmp(settings->video.driver, "sunxi"))
snprintf(msg, sizeof_msg, snprintf(msg, sizeof_msg,
" -- Sunxi-G2D Video Driver. \n" " -- Sunxi-G2D Video Driver. \n"
" \n" " \n"
@ -2856,17 +2874,17 @@ static void get_string_representation_bind_device(void * data, char *type_str,
size_t type_str_size) size_t type_str_size)
{ {
unsigned map = 0; unsigned map = 0;
rarch_setting_t *setting = (rarch_setting_t*)data; rarch_setting_t *setting = (rarch_setting_t*)data;
settings_t *settings = config_get_ptr();
if (!setting) if (!setting)
return; return;
map = g_settings.input.joypad_map[setting->index_offset]; map = settings->input.joypad_map[setting->index_offset];
if (map < g_settings.input.max_users) if (map < settings->input.max_users)
{ {
const char *device_name = const char *device_name = settings->input.device_names[map];
g_settings.input.device_names[map];
if (*device_name) if (*device_name)
strlcpy(type_str, device_name, type_str_size); strlcpy(type_str, device_name, type_str_size);
@ -2882,8 +2900,10 @@ static void get_string_representation_bind_device(void * data, char *type_str,
static void get_string_representation_savestate(void * data, char *type_str, static void get_string_representation_savestate(void * data, char *type_str,
size_t type_str_size) size_t type_str_size)
{ {
snprintf(type_str, type_str_size, "%d", g_settings.state_slot); settings_t *settings = config_get_ptr();
if (g_settings.state_slot == -1)
snprintf(type_str, type_str_size, "%d", settings->state_slot);
if (settings->state_slot == -1)
strlcat(type_str, " (Auto)", type_str_size); strlcat(type_str, " (Auto)", type_str_size);
} }
@ -2928,46 +2948,48 @@ void setting_data_get_label(file_list_t *list, char *type_str,
static void general_read_handler(void *data) static void general_read_handler(void *data)
{ {
rarch_setting_t *setting = (rarch_setting_t*)data; rarch_setting_t *setting = (rarch_setting_t*)data;
settings_t *settings = config_get_ptr();
if (!setting) if (!setting)
return; return;
if (!strcmp(setting->name, "audio_rate_control_delta")) if (!strcmp(setting->name, "audio_rate_control_delta"))
{ {
*setting->value.fraction = g_settings.audio.rate_control_delta; *setting->value.fraction = settings->audio.rate_control_delta;
if (*setting->value.fraction < 0.0005) if (*setting->value.fraction < 0.0005)
{ {
g_settings.audio.rate_control = false; settings->audio.rate_control = false;
g_settings.audio.rate_control_delta = 0.0; settings->audio.rate_control_delta = 0.0;
} }
else else
{ {
g_settings.audio.rate_control = true; settings->audio.rate_control = true;
g_settings.audio.rate_control_delta = *setting->value.fraction; settings->audio.rate_control_delta = *setting->value.fraction;
} }
} }
else if (!strcmp(setting->name, "audio_max_timing_skew")) else if (!strcmp(setting->name, "audio_max_timing_skew"))
*setting->value.fraction = g_settings.audio.max_timing_skew; *setting->value.fraction = settings->audio.max_timing_skew;
else if (!strcmp(setting->name, "video_refresh_rate_auto")) else if (!strcmp(setting->name, "video_refresh_rate_auto"))
*setting->value.fraction = g_settings.video.refresh_rate; *setting->value.fraction = settings->video.refresh_rate;
else if (!strcmp(setting->name, "input_player1_joypad_index")) else if (!strcmp(setting->name, "input_player1_joypad_index"))
*setting->value.integer = g_settings.input.joypad_map[0]; *setting->value.integer = settings->input.joypad_map[0];
else if (!strcmp(setting->name, "input_player2_joypad_index")) else if (!strcmp(setting->name, "input_player2_joypad_index"))
*setting->value.integer = g_settings.input.joypad_map[1]; *setting->value.integer = settings->input.joypad_map[1];
else if (!strcmp(setting->name, "input_player3_joypad_index")) else if (!strcmp(setting->name, "input_player3_joypad_index"))
*setting->value.integer = g_settings.input.joypad_map[2]; *setting->value.integer = settings->input.joypad_map[2];
else if (!strcmp(setting->name, "input_player4_joypad_index")) else if (!strcmp(setting->name, "input_player4_joypad_index"))
*setting->value.integer = g_settings.input.joypad_map[3]; *setting->value.integer = settings->input.joypad_map[3];
else if (!strcmp(setting->name, "input_player5_joypad_index")) else if (!strcmp(setting->name, "input_player5_joypad_index"))
*setting->value.integer = g_settings.input.joypad_map[4]; *setting->value.integer = settings->input.joypad_map[4];
} }
static void general_write_handler(void *data) static void general_write_handler(void *data)
{ {
unsigned rarch_cmd = RARCH_CMD_NONE; unsigned rarch_cmd = RARCH_CMD_NONE;
rarch_setting_t *setting = (rarch_setting_t*)data; rarch_setting_t *setting = (rarch_setting_t*)data;
driver_t *driver = driver_get_ptr(); settings_t *settings = config_get_ptr();
driver_t *driver = driver_get_ptr();
if (!setting) if (!setting)
return; return;
@ -3009,7 +3031,7 @@ static void general_write_handler(void *data)
if (driver->video_data && driver->video_poke if (driver->video_data && driver->video_poke
&& driver->video_poke->set_filtering) && driver->video_poke->set_filtering)
driver->video_poke->set_filtering(driver->video_data, driver->video_poke->set_filtering(driver->video_data,
1, g_settings.video.smooth); 1, settings->video.smooth);
} }
else if (!strcmp(setting->name, "pal60_enable")) else if (!strcmp(setting->name, "pal60_enable"))
{ {
@ -3048,17 +3070,17 @@ static void general_write_handler(void *data)
{ {
if (*setting->value.fraction < 0.0005) if (*setting->value.fraction < 0.0005)
{ {
g_settings.audio.rate_control = false; settings->audio.rate_control = false;
g_settings.audio.rate_control_delta = 0.0; settings->audio.rate_control_delta = 0.0;
} }
else else
{ {
g_settings.audio.rate_control = true; settings->audio.rate_control = true;
g_settings.audio.rate_control_delta = *setting->value.fraction; settings->audio.rate_control_delta = *setting->value.fraction;
} }
} }
else if (!strcmp(setting->name, "audio_max_timing_skew")) else if (!strcmp(setting->name, "audio_max_timing_skew"))
g_settings.audio.max_timing_skew = *setting->value.fraction; settings->audio.max_timing_skew = *setting->value.fraction;
else if (!strcmp(setting->name, "video_refresh_rate_auto")) else if (!strcmp(setting->name, "video_refresh_rate_auto"))
{ {
if (driver->video && driver->video_data) if (driver->video && driver->video_data)
@ -3071,21 +3093,21 @@ static void general_write_handler(void *data)
} }
else if (!strcmp(setting->name, "video_scale")) else if (!strcmp(setting->name, "video_scale"))
{ {
g_settings.video.scale = roundf(*setting->value.fraction); settings->video.scale = roundf(*setting->value.fraction);
if (!g_settings.video.fullscreen) if (!settings->video.fullscreen)
rarch_cmd = RARCH_CMD_REINIT; rarch_cmd = RARCH_CMD_REINIT;
} }
else if (!strcmp(setting->name, "input_player1_joypad_index")) else if (!strcmp(setting->name, "input_player1_joypad_index"))
g_settings.input.joypad_map[0] = *setting->value.integer; settings->input.joypad_map[0] = *setting->value.integer;
else if (!strcmp(setting->name, "input_player2_joypad_index")) else if (!strcmp(setting->name, "input_player2_joypad_index"))
g_settings.input.joypad_map[1] = *setting->value.integer; settings->input.joypad_map[1] = *setting->value.integer;
else if (!strcmp(setting->name, "input_player3_joypad_index")) else if (!strcmp(setting->name, "input_player3_joypad_index"))
g_settings.input.joypad_map[2] = *setting->value.integer; settings->input.joypad_map[2] = *setting->value.integer;
else if (!strcmp(setting->name, "input_player4_joypad_index")) else if (!strcmp(setting->name, "input_player4_joypad_index"))
g_settings.input.joypad_map[3] = *setting->value.integer; settings->input.joypad_map[3] = *setting->value.integer;
else if (!strcmp(setting->name, "input_player5_joypad_index")) else if (!strcmp(setting->name, "input_player5_joypad_index"))
g_settings.input.joypad_map[4] = *setting->value.integer; settings->input.joypad_map[4] = *setting->value.integer;
#ifdef HAVE_NETPLAY #ifdef HAVE_NETPLAY
else if (!strcmp(setting->name, "netplay_ip_address")) else if (!strcmp(setting->name, "netplay_ip_address"))
g_extern.has_set_netplay_ip_address = (setting->value.string[0] != '\0'); g_extern.has_set_netplay_ip_address = (setting->value.string[0] != '\0');
@ -3283,7 +3305,8 @@ static bool setting_data_append_list_main_menu_options(
{ {
rarch_setting_group_info_t group_info; rarch_setting_group_info_t group_info;
rarch_setting_group_info_t subgroup_info; rarch_setting_group_info_t subgroup_info;
driver_t *driver = driver_get_ptr(); driver_t *driver = driver_get_ptr();
settings_t *settings = config_get_ptr();
START_GROUP(group_info, "Main Menu"); START_GROUP(group_info, "Main Menu");
START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info);
@ -3293,8 +3316,8 @@ static bool setting_data_append_list_main_menu_options(
"Core Selection", "Core Selection",
group_info.name, group_info.name,
subgroup_info.name); subgroup_info.name);
(*list)[list_info->index - 1].size = sizeof(g_settings.libretro); (*list)[list_info->index - 1].size = sizeof(settings->libretro);
(*list)[list_info->index - 1].value.string = g_settings.libretro; (*list)[list_info->index - 1].value.string = settings->libretro;
(*list)[list_info->index - 1].values = EXT_EXECUTABLES; (*list)[list_info->index - 1].values = EXT_EXECUTABLES;
// It is not a good idea to have chosen action_toggle as the place // It is not a good idea to have chosen action_toggle as the place
// to put this callback. It should be called whenever the browser // to put this callback. It should be called whenever the browser
@ -3313,7 +3336,7 @@ static bool setting_data_append_list_main_menu_options(
subgroup_info.name); subgroup_info.name);
#endif #endif
if (g_settings.history_list_enable) if (settings->history_list_enable)
{ {
CONFIG_ACTION( CONFIG_ACTION(
"history_list", "history_list",
@ -3475,13 +3498,14 @@ static bool setting_data_append_list_driver_options(
{ {
rarch_setting_group_info_t group_info; rarch_setting_group_info_t group_info;
rarch_setting_group_info_t subgroup_info; rarch_setting_group_info_t subgroup_info;
settings_t *settings = config_get_ptr();
START_GROUP(group_info, "Driver Settings"); START_GROUP(group_info, "Driver Settings");
START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info);
CONFIG_STRING_OPTIONS( CONFIG_STRING_OPTIONS(
g_settings.input.driver, settings->input.driver,
"input_driver", "input_driver",
"Input Driver", "Input Driver",
config_get_default_input(), config_get_default_input(),
@ -3493,7 +3517,7 @@ static bool setting_data_append_list_driver_options(
settings_data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); settings_data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER);
CONFIG_STRING_OPTIONS( CONFIG_STRING_OPTIONS(
g_settings.video.driver, settings->video.driver,
"video_driver", "video_driver",
"Video Driver", "Video Driver",
config_get_default_video(), config_get_default_video(),
@ -3505,7 +3529,7 @@ static bool setting_data_append_list_driver_options(
settings_data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); settings_data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER);
CONFIG_STRING_OPTIONS( CONFIG_STRING_OPTIONS(
g_settings.audio.driver, settings->audio.driver,
"audio_driver", "audio_driver",
"Audio Driver", "Audio Driver",
config_get_default_audio(), config_get_default_audio(),
@ -3517,7 +3541,7 @@ static bool setting_data_append_list_driver_options(
settings_data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); settings_data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER);
CONFIG_STRING_OPTIONS( CONFIG_STRING_OPTIONS(
g_settings.audio.resampler, settings->audio.resampler,
"audio_resampler_driver", "audio_resampler_driver",
"Audio Resampler Driver", "Audio Resampler Driver",
config_get_default_audio_resampler(), config_get_default_audio_resampler(),
@ -3529,7 +3553,7 @@ static bool setting_data_append_list_driver_options(
settings_data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); settings_data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER);
CONFIG_STRING_OPTIONS( CONFIG_STRING_OPTIONS(
g_settings.camera.driver, settings->camera.driver,
"camera_driver", "camera_driver",
"Camera Driver", "Camera Driver",
config_get_default_camera(), config_get_default_camera(),
@ -3541,7 +3565,7 @@ static bool setting_data_append_list_driver_options(
settings_data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); settings_data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER);
CONFIG_STRING_OPTIONS( CONFIG_STRING_OPTIONS(
g_settings.location.driver, settings->location.driver,
"location_driver", "location_driver",
"Location Driver", "Location Driver",
config_get_default_location(), config_get_default_location(),
@ -3554,7 +3578,7 @@ static bool setting_data_append_list_driver_options(
#ifdef HAVE_MENU #ifdef HAVE_MENU
CONFIG_STRING_OPTIONS( CONFIG_STRING_OPTIONS(
g_settings.menu.driver, settings->menu.driver,
"menu_driver", "menu_driver",
"Menu Driver", "Menu Driver",
config_get_default_menu(), config_get_default_menu(),
@ -3567,7 +3591,7 @@ static bool setting_data_append_list_driver_options(
#endif #endif
CONFIG_STRING_OPTIONS( CONFIG_STRING_OPTIONS(
g_settings.input.joypad_driver, settings->input.joypad_driver,
"input_joypad_driver", "input_joypad_driver",
"Joypad Driver", "Joypad Driver",
config_get_default_joypad(), config_get_default_joypad(),
@ -3590,13 +3614,14 @@ static bool setting_data_append_list_general_options(
{ {
rarch_setting_group_info_t group_info; rarch_setting_group_info_t group_info;
rarch_setting_group_info_t subgroup_info; rarch_setting_group_info_t subgroup_info;
settings_t *settings = config_get_ptr();
START_GROUP(group_info, "General Settings"); START_GROUP(group_info, "General Settings");
START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info);
CONFIG_BOOL( CONFIG_BOOL(
g_settings.load_dummy_on_core_shutdown, settings->load_dummy_on_core_shutdown,
"dummy_on_core_shutdown", "dummy_on_core_shutdown",
"Dummy On Core Shutdown", "Dummy On Core Shutdown",
load_dummy_on_core_shutdown, load_dummy_on_core_shutdown,
@ -3609,7 +3634,7 @@ static bool setting_data_append_list_general_options(
settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED);
CONFIG_BOOL( CONFIG_BOOL(
g_settings.core_specific_config, settings->core_specific_config,
"core_specific_config", "core_specific_config",
"Configuration Per-Core", "Configuration Per-Core",
default_core_specific_config, default_core_specific_config,
@ -3638,7 +3663,7 @@ static bool setting_data_append_list_general_options(
general_read_handler); general_read_handler);
CONFIG_UINT(g_settings.libretro_log_level, CONFIG_UINT(settings->libretro_log_level,
"libretro_log_level", "libretro_log_level",
"Libretro Logging Level", "Libretro Logging Level",
libretro_log_level, libretro_log_level,
@ -3666,7 +3691,7 @@ static bool setting_data_append_list_general_options(
general_read_handler); general_read_handler);
settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED);
CONFIG_BOOL(g_settings.config_save_on_exit, CONFIG_BOOL(settings->config_save_on_exit,
"config_save_on_exit", "config_save_on_exit",
"Configuration Save On Exit", "Configuration Save On Exit",
config_save_on_exit, config_save_on_exit,
@ -3682,7 +3707,7 @@ static bool setting_data_append_list_general_options(
START_SUB_GROUP(list, list_info, "Frame rewinding", group_info.name, subgroup_info); START_SUB_GROUP(list, list_info, "Frame rewinding", group_info.name, subgroup_info);
CONFIG_BOOL( CONFIG_BOOL(
g_settings.rewind_enable, settings->rewind_enable,
"rewind_enable", "rewind_enable",
"Rewind", "Rewind",
rewind_enable, rewind_enable,
@ -3696,7 +3721,7 @@ static bool setting_data_append_list_general_options(
settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO);
#if 0 #if 0
CONFIG_SIZE( CONFIG_SIZE(
g_settings.rewind_buffer_size, settings->rewind_buffer_size,
"rewind_buffer_size", "rewind_buffer_size",
"Rewind Buffer Size", "Rewind Buffer Size",
rewind_buffer_size, rewind_buffer_size,
@ -3706,7 +3731,7 @@ static bool setting_data_append_list_general_options(
general_read_handler) general_read_handler)
#endif #endif
CONFIG_UINT( CONFIG_UINT(
g_settings.rewind_granularity, settings->rewind_granularity,
"rewind_granularity", "rewind_granularity",
"Rewind Granularity", "Rewind Granularity",
rewind_granularity, rewind_granularity,
@ -3722,7 +3747,7 @@ static bool setting_data_append_list_general_options(
START_SUB_GROUP(list, list_info, "Saving", group_info.name, subgroup_info); START_SUB_GROUP(list, list_info, "Saving", group_info.name, subgroup_info);
CONFIG_BOOL( CONFIG_BOOL(
g_settings.block_sram_overwrite, settings->block_sram_overwrite,
"block_sram_overwrite", "block_sram_overwrite",
"SRAM Block overwrite", "SRAM Block overwrite",
block_sram_overwrite, block_sram_overwrite,
@ -3735,7 +3760,7 @@ static bool setting_data_append_list_general_options(
#ifdef HAVE_THREADS #ifdef HAVE_THREADS
CONFIG_UINT( CONFIG_UINT(
g_settings.autosave_interval, settings->autosave_interval,
"autosave_interval", "autosave_interval",
"SRAM Autosave", "SRAM Autosave",
autosave_interval, autosave_interval,
@ -3751,7 +3776,7 @@ static bool setting_data_append_list_general_options(
#endif #endif
CONFIG_BOOL( CONFIG_BOOL(
g_settings.savestate_auto_index, settings->savestate_auto_index,
"savestate_auto_index", "savestate_auto_index",
"Save State Auto Index", "Save State Auto Index",
savestate_auto_index, savestate_auto_index,
@ -3763,7 +3788,7 @@ static bool setting_data_append_list_general_options(
general_read_handler); general_read_handler);
CONFIG_BOOL( CONFIG_BOOL(
g_settings.savestate_auto_save, settings->savestate_auto_save,
"savestate_auto_save", "savestate_auto_save",
"Auto Save State", "Auto Save State",
savestate_auto_save, savestate_auto_save,
@ -3775,7 +3800,7 @@ static bool setting_data_append_list_general_options(
general_read_handler); general_read_handler);
CONFIG_BOOL( CONFIG_BOOL(
g_settings.savestate_auto_load, settings->savestate_auto_load,
"savestate_auto_load", "savestate_auto_load",
"Auto Load State", "Auto Load State",
savestate_auto_load, savestate_auto_load,
@ -3792,7 +3817,7 @@ static bool setting_data_append_list_general_options(
START_SUB_GROUP(list, list_info, "Frame throttling", group_info.name, subgroup_info); START_SUB_GROUP(list, list_info, "Frame throttling", group_info.name, subgroup_info);
CONFIG_BOOL( CONFIG_BOOL(
g_settings.fastforward_ratio_throttle_enable, settings->fastforward_ratio_throttle_enable,
"fastforward_ratio_throttle_enable", "fastforward_ratio_throttle_enable",
"Limit Maximum Run Speed", "Limit Maximum Run Speed",
fastforward_ratio_throttle_enable, fastforward_ratio_throttle_enable,
@ -3804,7 +3829,7 @@ static bool setting_data_append_list_general_options(
general_read_handler); general_read_handler);
CONFIG_FLOAT( CONFIG_FLOAT(
g_settings.fastforward_ratio, settings->fastforward_ratio,
"fastforward_ratio", "fastforward_ratio",
"Maximum Run Speed", "Maximum Run Speed",
fastforward_ratio, fastforward_ratio,
@ -3816,7 +3841,7 @@ static bool setting_data_append_list_general_options(
settings_list_current_add_range(list, list_info, 1, 10, 0.1, true, true); settings_list_current_add_range(list, list_info, 1, 10, 0.1, true, true);
CONFIG_FLOAT( CONFIG_FLOAT(
g_settings.slowmotion_ratio, settings->slowmotion_ratio,
"slowmotion_ratio", "slowmotion_ratio",
"Slow-Motion Ratio", "Slow-Motion Ratio",
slowmotion_ratio, slowmotion_ratio,