diff --git a/Makefile.griffin b/Makefile.griffin index f893cd9350..b49b053205 100644 --- a/Makefile.griffin +++ b/Makefile.griffin @@ -157,6 +157,10 @@ ifeq ($(HAVE_LIBSICKSAXIS), 1) CFLAGS += -DHAVE_LIBSICKSAXIS endif +ifeq ($(HAVE_LIBRETRODB), 1) +CFLAGS += -DHAVE_LIBRETRODB +endif + ifeq ($(HAVE_RPNG), 1) CFLAGS += -DWANT_RPNG endif diff --git a/Makefile.ps3 b/Makefile.ps3 index 5cfe5a2773..22eaa84921 100644 --- a/Makefile.ps3 +++ b/Makefile.ps3 @@ -106,7 +106,7 @@ PPU_LDLIBS = $(FONT_LIBS) $(GL_LIBS) $(WHOLE_START) -lretro_ps3 $(WHOLE_END) -l PPU_RANLIB = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-ranlib.exe -DEFINES += -DHAVE_THREADS -DRARCH_CONSOLE -DHAVE_OPENGL -DHAVE_HEADSET -DHAVE_OPENGLES -DHAVE_OPENGLES1 -DHAVE_PSGL -DHAVE_CG -DHAVE_CG_RUNTIME_COMPILER -DHAVE_FBO -DHAVE_SYSMODULES -DHAVE_SYSUTILS -DHAVE_RARCH_EXEC -DHAVE_LIBRETRO_MANAGEMENT -DHAVE_RSOUND -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_7Z -DWANT_ZLIB -DSINC_LOWER_QUALITY -D__CELLOS_LV2__ -DHAVE_NETPLAY=1 -DHAVE_NETWORKING=1 -DHAVE_SOCKET_LEGACY=1 -DHAVE_MOUSE -DHAVE_GRIFFIN=1 -DHAVE_MULTIMAN=1 -DPC_DEVELOPMENT_IP_ADDRESS=\"$(PC_DEVELOPMENT_IP_ADDRESS)\" -DPC_DEVELOPMENT_UDP_PORT=$(PC_DEVELOPMENT_UDP_PORT) -DHAVE_FILTERS_BUILTIN -DHAVE_BUILTIN_AUTOCONFIG +DEFINES += -DHAVE_THREADS -DRARCH_CONSOLE -DHAVE_OPENGL -DHAVE_HEADSET -DHAVE_LIBRETRODB -DHAVE_OPENGLES -DHAVE_OPENGLES1 -DHAVE_PSGL -DHAVE_CG -DHAVE_CG_RUNTIME_COMPILER -DHAVE_FBO -DHAVE_SYSMODULES -DHAVE_SYSUTILS -DHAVE_RARCH_EXEC -DHAVE_LIBRETRO_MANAGEMENT -DHAVE_RSOUND -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_7Z -DWANT_ZLIB -DSINC_LOWER_QUALITY -D__CELLOS_LV2__ -DHAVE_NETPLAY=1 -DHAVE_NETWORKING=1 -DHAVE_SOCKET_LEGACY=1 -DHAVE_MOUSE -DHAVE_GRIFFIN=1 -DHAVE_MULTIMAN=1 -DPC_DEVELOPMENT_IP_ADDRESS=\"$(PC_DEVELOPMENT_IP_ADDRESS)\" -DPC_DEVELOPMENT_UDP_PORT=$(PC_DEVELOPMENT_UDP_PORT) -DHAVE_FILTERS_BUILTIN -DHAVE_BUILTIN_AUTOCONFIG ifeq ($(DEBUG), 1) PPU_OPTIMIZE_LV := -O0 -g diff --git a/frontend/frontend_salamander.c b/frontend/frontend_salamander.c index 4593efabf4..b026c31847 100644 --- a/frontend/frontend_salamander.c +++ b/frontend/frontend_salamander.c @@ -128,7 +128,7 @@ static void salamander_init(char *s, size_t len) if (!config_file_exists || !strcmp(s, "")) find_and_set_first_file(s, len, EXT_EXECUTABLES); else - RARCH_LOG("Start [%s] found in retroarch.cfg.\n", len); + RARCH_LOG("Start [%s] found in retroarch.cfg.\n", s); if (!config_file_exists) { @@ -136,7 +136,7 @@ static void salamander_init(char *s, size_t len) if (conf) { - config_set_string(conf, "libretro_path", len); + config_set_string(conf, "libretro_path", s); config_file_write(conf, g_defaults.config_path); config_file_free(conf); } diff --git a/input/drivers/ps3_input.c b/input/drivers/ps3_input.c index 0bfb0adccf..1ad8349886 100644 --- a/input/drivers/ps3_input.c +++ b/input/drivers/ps3_input.c @@ -164,7 +164,7 @@ static void* ps3_input_init(void) ps3->joypad = input_joypad_init_driver(settings->input.joypad_driver, ps3); if (ps3->joypad) - ps3->joypad->init(); + ps3->joypad->init(ps3); #ifdef HAVE_MOUSE cellMouseInit(MAX_MICE); diff --git a/libretro-db/query.c b/libretro-db/query.c index ac625b8ed8..cc41866718 100644 --- a/libretro-db/query.c +++ b/libretro-db/query.c @@ -185,7 +185,8 @@ static struct buffer parse_argument(struct buffer buff, struct argument *arg, static struct rmsgpack_dom_value is_true(struct rmsgpack_dom_value input, unsigned argc, const struct argument *argv) { - struct rmsgpack_dom_value res = {0}; + struct rmsgpack_dom_value res; + memset(&res, 0, sizeof(res)); res.type = RDT_BOOL; res.bool_ = 0; @@ -202,7 +203,8 @@ static struct rmsgpack_dom_value equals(struct rmsgpack_dom_value input, unsigned argc, const struct argument * argv) { struct argument arg; - struct rmsgpack_dom_value res = {0}; + struct rmsgpack_dom_value res; + memset(&res, 0, sizeof(res)); res.type = RDT_BOOL; @@ -231,7 +233,8 @@ static struct rmsgpack_dom_value operator_or(struct rmsgpack_dom_value input, unsigned argc, const struct argument * argv) { unsigned i; - struct rmsgpack_dom_value res = {0}; + struct rmsgpack_dom_value res; + memset(&res, 0, sizeof(res)); res.type = RDT_BOOL; res.bool_ = 0; @@ -258,8 +261,9 @@ static struct rmsgpack_dom_value operator_or(struct rmsgpack_dom_value input, static struct rmsgpack_dom_value between(struct rmsgpack_dom_value input, unsigned argc, const struct argument * argv) { - struct rmsgpack_dom_value res = {0}; + struct rmsgpack_dom_value res; unsigned i = 0; + memset(&res, 0, sizeof(res)); res.type = RDT_BOOL; res.bool_ = 0; @@ -292,7 +296,8 @@ static struct rmsgpack_dom_value operator_and(struct rmsgpack_dom_value input, unsigned argc, const struct argument * argv) { unsigned i; - struct rmsgpack_dom_value res = {0}; + struct rmsgpack_dom_value res; + memset(&res, 0, sizeof(res)); res.type = RDT_BOOL; res.bool_ = 0; @@ -320,8 +325,9 @@ static struct rmsgpack_dom_value operator_and(struct rmsgpack_dom_value input, static struct rmsgpack_dom_value q_glob(struct rmsgpack_dom_value input, unsigned argc, const struct argument * argv) { + struct rmsgpack_dom_value res; unsigned i = 0; - struct rmsgpack_dom_value res = {0}; + memset(&res, 0, sizeof(res)); res.type = RDT_BOOL; res.bool_ = 0; @@ -347,9 +353,10 @@ static struct rmsgpack_dom_value all_map(struct rmsgpack_dom_value input, { unsigned i; struct argument arg; + struct rmsgpack_dom_value res; struct rmsgpack_dom_value nil_value; - struct rmsgpack_dom_value res = {0}; struct rmsgpack_dom_value *value = NULL; + memset(&res, 0, sizeof(res)); nil_value.type = RDT_NULL; res.type = RDT_BOOL; @@ -700,7 +707,7 @@ static struct buffer parse_table(struct buffer buff, unsigned i; const char *ident_name; size_t ident_len; - struct argument args[MAX_ARGS] = {{0}}; + struct argument args[MAX_ARGS]; unsigned argi = 0; buff = chomp(buff); diff --git a/menu/menu_entries_cbs.c b/menu/menu_entries_cbs.c index a76b0de45d..9c7868c407 100644 --- a/menu/menu_entries_cbs.c +++ b/menu/menu_entries_cbs.c @@ -130,62 +130,6 @@ int cb_core_updater_download(void *data, size_t len) } #endif -int menu_entries_common_is_settings_entry(const char *label) -{ - uint32_t hash = djb2_calculate(label); - - switch (hash) - { - case MENU_LABEL_DRIVER_SETTINGS: - case MENU_LABEL_CORE_SETTINGS: - case MENU_LABEL_CONFIGURATION_SETTINGS: - case MENU_LABEL_LOGGING_SETTINGS: - case MENU_LABEL_SAVING_SETTINGS: - case MENU_LABEL_REWIND_SETTINGS: - case MENU_LABEL_VIDEO_SETTINGS: - case MENU_LABEL_RECORDING_SETTINGS: - case MENU_LABEL_FRAME_THROTTLE_SETTINGS: - case MENU_LABEL_SHADER_SETTINGS: - case MENU_LABEL_ONSCREEN_DISPLAY_SETTINGS: - case MENU_LABEL_AUDIO_SETTINGS: - case MENU_LABEL_INPUT_SETTINGS: - case MENU_LABEL_INPUT_USER_1_BINDS: - case MENU_LABEL_INPUT_USER_2_BINDS: - case MENU_LABEL_INPUT_USER_3_BINDS: - case MENU_LABEL_INPUT_USER_4_BINDS: - case MENU_LABEL_INPUT_USER_5_BINDS: - case MENU_LABEL_INPUT_USER_6_BINDS: - case MENU_LABEL_INPUT_USER_7_BINDS: - case MENU_LABEL_INPUT_USER_8_BINDS: - case MENU_LABEL_INPUT_USER_9_BINDS: - case MENU_LABEL_INPUT_USER_10_BINDS: - case MENU_LABEL_INPUT_USER_11_BINDS: - case MENU_LABEL_INPUT_USER_12_BINDS: - case MENU_LABEL_INPUT_USER_13_BINDS: - case MENU_LABEL_INPUT_USER_14_BINDS: - case MENU_LABEL_INPUT_USER_15_BINDS: - case MENU_LABEL_INPUT_USER_16_BINDS: - case MENU_LABEL_INPUT_HOTKEY_SETTINGS: - case MENU_LABEL_OVERLAY_SETTINGS: - case MENU_LABEL_ONSCREEN_KEYBOARD_OVERLAY_SETTINGS: - case MENU_LABEL_MENU_SETTINGS: - case MENU_LABEL_UI_SETTINGS: - case MENU_LABEL_PATCH_SETTINGS: - case MENU_LABEL_PLAYLIST_SETTINGS: - case MENU_LABEL_CORE_UPDATER_SETTINGS: - case MENU_LABEL_NETWORK_SETTINGS: - case MENU_LABEL_ARCHIVE_SETTINGS: - case MENU_LABEL_USER_SETTINGS: - case MENU_LABEL_DIRECTORY_SETTINGS: - case MENU_LABEL_PRIVACY_SETTINGS: - break; - default: - return 0; - } - - return 1; -} - #if 0 #define DEBUG_LOG #endif diff --git a/menu/menu_entries_cbs.h b/menu/menu_entries_cbs.h index 88fa052df4..67ba544098 100644 --- a/menu/menu_entries_cbs.h +++ b/menu/menu_entries_cbs.h @@ -45,8 +45,6 @@ int action_right_cheat(unsigned type, const char *label, void menu_entries_common_load_content(bool persist); -int menu_entries_common_is_settings_entry(const char *label); - int menu_entries_cbs_init_bind_left(menu_file_list_cbs_t *cbs, const char *path, const char *label, unsigned type, size_t idx, const char *elem0, const char *elem1, const char *menu_label, diff --git a/menu/menu_entries_cbs_deferred_push.c b/menu/menu_entries_cbs_deferred_push.c index 64724159a2..a947ee3842 100644 --- a/menu/menu_entries_cbs_deferred_push.c +++ b/menu/menu_entries_cbs_deferred_push.c @@ -460,19 +460,6 @@ static int menu_entries_cbs_init_bind_deferred_push_compare_label(menu_file_list { if (strstr(label, "deferred_rdb_entry_detail")) cbs->action_deferred_push = deferred_push_rdb_entry_detail; - else - return -1; - - return 0; -} - -static int menu_entries_cbs_init_bind_deferred_push_compare_type(menu_file_list_cbs_t *cbs, unsigned type, - uint32_t label_hash) -{ - if (type == MENU_SETTING_GROUP) - cbs->action_deferred_push = deferred_push_category; - else if (type == MENU_FILE_PLAYLIST_COLLECTION) - cbs->action_deferred_push = deferred_push_rdb_collection; else { switch (label_hash) @@ -631,21 +618,35 @@ static int menu_entries_cbs_init_bind_deferred_push_compare_type(menu_file_list_ return 0; } +static int menu_entries_cbs_init_bind_deferred_push_compare_type(menu_file_list_cbs_t *cbs, unsigned type, + uint32_t label_hash) +{ + if (type == MENU_SETTING_GROUP) + cbs->action_deferred_push = deferred_push_category; + else if (type == MENU_FILE_PLAYLIST_COLLECTION) + cbs->action_deferred_push = deferred_push_rdb_collection; + else + return -1; + + return 0; +} + int menu_entries_cbs_init_bind_deferred_push(menu_file_list_cbs_t *cbs, const char *path, const char *label, unsigned type, size_t idx, const char *elem0, const char *elem1, uint32_t label_hash, uint32_t menu_label_hash) { settings_t *settings = config_get_ptr(); + rarch_setting_t *setting = menu_setting_find(elem0); if (!cbs) return -1; cbs->action_deferred_push = deferred_push_default; - if ((strlen(elem1) != 0) && !!strcmp(elem0, elem1)) + if (setting) { - if (menu_entries_common_is_settings_entry(elem0)) + if (!strcmp(setting->parent_group, "Main Menu") && setting->type == ST_GROUP) { if (!settings->menu.collapse_subgroups_enable) { diff --git a/menu/menu_entries_cbs_left.c b/menu/menu_entries_cbs_left.c index ee00caa964..9e700de4e6 100644 --- a/menu/menu_entries_cbs_left.c +++ b/menu/menu_entries_cbs_left.c @@ -347,10 +347,11 @@ static int menu_entries_cbs_init_bind_left_compare_label(menu_file_list_cbs_t *c const char *label, uint32_t label_hash, const char *elem0) { unsigned i; + rarch_setting_t *setting = menu_setting_find(label); - if (label) + if (setting) { - if (menu_entries_common_is_settings_entry(elem0)) + if (!strcmp(setting->parent_group, "Main Menu") && setting->type == ST_GROUP) { cbs->action_left = action_left_scroll; return 0; @@ -447,6 +448,7 @@ static int menu_entries_cbs_init_bind_left_compare_type(menu_file_list_cbs_t *cb case MENU_FILE_DOWNLOAD_CORE: case MENU_FILE_CHEAT: case MENU_FILE_REMAP: + case MENU_FILE_PLAYLIST_COLLECTION: case MENU_SETTING_GROUP: switch (menu_label_hash) { diff --git a/menu/menu_entries_cbs_right.c b/menu/menu_entries_cbs_right.c index a06b23846a..a10b773024 100644 --- a/menu/menu_entries_cbs_right.c +++ b/menu/menu_entries_cbs_right.c @@ -392,6 +392,7 @@ static int menu_entries_cbs_init_bind_right_compare_type(menu_file_list_cbs_t *c case MENU_FILE_DOWNLOAD_CORE: case MENU_FILE_CHEAT: case MENU_FILE_REMAP: + case MENU_FILE_PLAYLIST_COLLECTION: case MENU_SETTING_GROUP: switch (menu_label_hash) { @@ -419,10 +420,11 @@ static int menu_entries_cbs_init_bind_right_compare_label(menu_file_list_cbs_t * const char *label, uint32_t label_hash, uint32_t menu_label_hash, const char *elem0) { unsigned i; + rarch_setting_t *setting = menu_setting_find(label); - if (label) + if (setting) { - if (menu_entries_common_is_settings_entry(elem0)) + if (!strcmp(setting->parent_group, "Settings") && setting->type == ST_GROUP) { cbs->action_right = action_right_scroll; return 0; diff --git a/menu/menu_entries_cbs_title.c b/menu/menu_entries_cbs_title.c index 9d5bffcadd..ff951bf811 100644 --- a/menu/menu_entries_cbs_title.c +++ b/menu/menu_entries_cbs_title.c @@ -45,6 +45,8 @@ static int action_get_title_default(const char *path, const char *label, char elem0_path[PATH_MAX_LENGTH], elem1_path[PATH_MAX_LENGTH]; struct string_list *list_label = string_split(label, "|"); struct string_list *list_path = string_split(path, "|"); + driver_t *driver = driver_get_ptr(); + rarch_setting_t *setting = NULL; *elem0 = *elem1 = *elem0_path = *elem1_path = 0; @@ -70,22 +72,27 @@ static int action_get_title_default(const char *path, const char *label, string_list_free(list_path); } + hash = djb2_calculate(label); + #if 0 RARCH_LOG("label %s, elem0 %s, elem1 %s\n", label, elem0, elem1); #endif - if (menu_entries_common_is_settings_entry(label) == 1) + setting = menu_setting_find(label); + + if (setting) { - strlcpy(s, string_to_upper(elem0), len); - if (elem1[0] != '\0') + if (!strcmp(setting->parent_group, "Main Menu") && setting->type == ST_GROUP) { - strlcat(s, " - ", len); - strlcat(s, string_to_upper(elem1), len); + strlcpy(s, string_to_upper(elem0), len); + if (elem1[0] != '\0') + { + strlcat(s, " - ", len); + strlcat(s, string_to_upper(elem1), len); + } + return 0; } - return 0; } - - hash = djb2_calculate(label); switch (hash) { @@ -283,36 +290,36 @@ static int action_get_title_default(const char *path, const char *label, snprintf(s, len, "AUTOCONFIG DIR %s", path); break; default: - if (menu_type == MENU_SETTINGS_CUSTOM_VIEWPORT || - menu_type == MENU_SETTINGS) - snprintf(s, len, "MENU %s", path); - else if (menu_type == MENU_SETTINGS_CUSTOM_BIND || - menu_type == MENU_SETTINGS_CUSTOM_BIND_KEYBOARD) + switch (menu_type) { - strlcpy(s, "INPUT SETTINGS", len); - if (elem1[0] != '\0') - { - strlcat(s, " - ", len); - strlcat(s, string_to_upper(elem1), len); - } - } - else - { - driver_t *driver = driver_get_ptr(); + case MENU_SETTINGS_CUSTOM_VIEWPORT: + case MENU_SETTINGS: + snprintf(s, len, "MENU %s", path); + break; + case MENU_SETTINGS_CUSTOM_BIND: + case MENU_SETTINGS_CUSTOM_BIND_KEYBOARD: + strlcpy(s, "INPUT SETTINGS", len); + if (elem1[0] != '\0') + { + strlcat(s, " - ", len); + strlcat(s, string_to_upper(elem1), len); + } + break; + default: + if (driver->menu->defer_core) + snprintf(s, len, "CONTENT %s", path); + else + { + global_t *global = global_get_ptr(); + const char *core_name = global->menu.info.library_name; - if (driver->menu->defer_core) - snprintf(s, len, "CONTENT %s", path); - else - { - global_t *global = global_get_ptr(); - const char *core_name = global->menu.info.library_name; - - if (!core_name) - core_name = global->system.info.library_name; - if (!core_name) - core_name = "No Core"; - snprintf(s, len, "CONTENT (%s) %s", core_name, path); - } + if (!core_name) + core_name = global->system.info.library_name; + if (!core_name) + core_name = "No Core"; + snprintf(s, len, "CONTENT (%s) %s", core_name, path); + } + break; } break; } diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 403c6fd486..1e7cd0afdd 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -1625,14 +1625,17 @@ static void setting_get_string_representation_hex(void *data, **/ static rarch_setting_t setting_action_setting(const char* name, const char* short_description, - const char *group, const char *subgroup) + const char *group, const char *subgroup, + const char *parent_group) { - rarch_setting_t result = {0}; + rarch_setting_t result; + memset(&result, 0, sizeof(result)); result.type = ST_ACTION; result.name = name; result.short_description = short_description; + result.parent_group = parent_group; result.group = group; result.subgroup = subgroup; result.change_handler = NULL; @@ -1659,10 +1662,13 @@ static rarch_setting_t setting_action_setting(const char* name, * * Returns: setting of type ST_GROUP. **/ -static rarch_setting_t setting_group_setting(enum setting_type type, const char* name) +static rarch_setting_t setting_group_setting(enum setting_type type, const char* name, + const char *parent_group) { - rarch_setting_t result = {0}; + rarch_setting_t result; + memset(&result, 0, sizeof(result)); + result.parent_group = parent_group; result.type = type; result.name = name; result.short_description = name; @@ -1683,15 +1689,17 @@ static rarch_setting_t setting_group_setting(enum setting_type type, const char* * Returns: setting of type ST_SUBGROUP. **/ static rarch_setting_t setting_subgroup_setting(enum setting_type type, - const char* name, const char *parent_name) + const char* name, const char *parent_name, const char *parent_group) { - rarch_setting_t result = {0}; + rarch_setting_t result; + memset(&result, 0, sizeof(result)); result.type = type; result.name = name; result.short_description = name; result.group = parent_name; + result.parent_group = parent_group; result.get_string_representation = &setting_get_string_representation_default; @@ -1717,9 +1725,11 @@ static rarch_setting_t setting_subgroup_setting(enum setting_type type, static rarch_setting_t setting_float_setting(const char* name, const char* short_description, float* target, float default_value, const char *rounding, const char *group, const char *subgroup, + const char *parent_group, change_handler_t change_handler, change_handler_t read_handler) { - rarch_setting_t result = {0}; + rarch_setting_t result; + memset(&result, 0, sizeof(result)); result.type = ST_FLOAT; result.name = name; @@ -1727,6 +1737,7 @@ static rarch_setting_t setting_float_setting(const char* name, result.short_description = short_description; result.group = group; result.subgroup = subgroup; + result.parent_group = parent_group; result.rounding_fraction = rounding; result.change_handler = change_handler; @@ -1766,10 +1777,11 @@ static rarch_setting_t setting_float_setting(const char* name, static rarch_setting_t setting_bool_setting(const char* name, const char* short_description, bool* target, bool default_value, const char *off, const char *on, - const char *group, const char *subgroup, + const char *group, const char *subgroup, const char *parent_group, change_handler_t change_handler, change_handler_t read_handler) { - rarch_setting_t result = {0}; + rarch_setting_t result; + memset(&result, 0, sizeof(result)); result.type = ST_BOOL; result.name = name; @@ -1777,6 +1789,7 @@ static rarch_setting_t setting_bool_setting(const char* name, result.short_description = short_description; result.group = group; result.subgroup = subgroup; + result.parent_group = parent_group; result.change_handler = change_handler; result.read_handler = read_handler; @@ -1814,10 +1827,12 @@ static rarch_setting_t setting_bool_setting(const char* name, **/ static rarch_setting_t setting_int_setting(const char* name, const char* short_description, int* target, int default_value, - const char *group, const char *subgroup, change_handler_t change_handler, + const char *group, const char *subgroup, const char *parent_group, + change_handler_t change_handler, change_handler_t read_handler) { - rarch_setting_t result = {0}; + rarch_setting_t result; + memset(&result, 0, sizeof(result)); result.type = ST_INT; result.name = name; @@ -1825,6 +1840,7 @@ static rarch_setting_t setting_int_setting(const char* name, result.short_description = short_description; result.group = group; result.subgroup = subgroup; + result.parent_group = parent_group; result.change_handler = change_handler; result.read_handler = read_handler; @@ -1854,10 +1870,12 @@ static rarch_setting_t setting_int_setting(const char* name, **/ static rarch_setting_t setting_uint_setting(const char* name, const char* short_description, unsigned int* target, - unsigned int default_value, const char *group, const char *subgroup, + unsigned int default_value, + const char *group, const char *subgroup, const char *parent_group, change_handler_t change_handler, change_handler_t read_handler) { - rarch_setting_t result = {0}; + rarch_setting_t result; + memset(&result, 0, sizeof(result)); result.type = ST_UINT; result.name = name; @@ -1865,6 +1883,7 @@ static rarch_setting_t setting_uint_setting(const char* name, result.short_description = short_description; result.group = group; result.subgroup = subgroup; + result.parent_group = parent_group; result.change_handler = change_handler; result.read_handler = read_handler; @@ -1899,10 +1918,12 @@ static rarch_setting_t setting_uint_setting(const char* name, **/ static rarch_setting_t setting_hex_setting(const char* name, const char* short_description, unsigned int* target, - unsigned int default_value, const char *group, const char *subgroup, + unsigned int default_value, + const char *group, const char *subgroup, const char *parent_group, change_handler_t change_handler, change_handler_t read_handler) { - rarch_setting_t result = {0}; + rarch_setting_t result; + memset(&result, 0, sizeof(result)); result.type = ST_HEX; result.name = name; @@ -1910,6 +1931,7 @@ static rarch_setting_t setting_hex_setting(const char* name, result.short_description = short_description; result.group = group; result.subgroup = subgroup; + result.parent_group = parent_group; result.change_handler = change_handler; result.read_handler = read_handler; @@ -1946,9 +1968,10 @@ static rarch_setting_t setting_bind_setting(const char* name, const char* short_description, struct retro_keybind* target, uint32_t idx, uint32_t idx_offset, const struct retro_keybind* default_value, - const char *group, const char *subgroup) + const char *group, const char *subgroup, const char *parent_group) { - rarch_setting_t result = {0}; + rarch_setting_t result; + memset(&result, 0, sizeof(result)); result.type = ST_BIND; result.name = name; @@ -1956,6 +1979,7 @@ static rarch_setting_t setting_bind_setting(const char* name, result.short_description = short_description; result.group = group; result.subgroup = subgroup; + result.parent_group = parent_group; result.value.keybind = target; result.default_value.keybind = default_value; @@ -1991,10 +2015,12 @@ static rarch_setting_t setting_bind_setting(const char* name, rarch_setting_t setting_string_setting(enum setting_type type, const char* name, const char* short_description, char* target, unsigned size, const char* default_value, const char *empty, - const char *group, const char *subgroup, change_handler_t change_handler, + const char *group, const char *subgroup, const char *parent_group, + change_handler_t change_handler, change_handler_t read_handler) { - rarch_setting_t result = {0}; + rarch_setting_t result; + memset(&result, 0, sizeof(result)); result.type = type; result.name = name; @@ -2002,6 +2028,7 @@ rarch_setting_t setting_string_setting(enum setting_type type, result.short_description = short_description; result.group = group; result.subgroup = subgroup; + result.parent_group = parent_group; result.dir.empty_path = empty; result.change_handler = change_handler; @@ -2053,13 +2080,14 @@ static rarch_setting_t setting_string_setting_options(enum setting_type type, const char* name, const char* short_description, char* target, unsigned size, const char* default_value, const char *empty, const char *values, - const char *group, const char *subgroup, + const char *group, const char *subgroup, const char *parent_group, change_handler_t change_handler, change_handler_t read_handler) { rarch_setting_t result = setting_string_setting(type, name, short_description, target, size, default_value, empty, group, - subgroup, change_handler, read_handler); + subgroup, parent_group, change_handler, read_handler); + result.parent_group = parent_group; result.values = values; return result; } @@ -3308,81 +3336,81 @@ static void general_write_handler(void *data) event_command(rarch_cmd); } -#define START_GROUP(group_info, NAME) \ +#define START_GROUP(group_info, NAME, parent_group) \ { \ group_info.name = NAME; \ - if (!(menu_settings_list_append(list, list_info, setting_group_setting (ST_GROUP, NAME)))) return false; \ + if (!(menu_settings_list_append(list, list_info, setting_group_setting (ST_GROUP, NAME, parent_group)))) return false; \ } -#define END_GROUP(list, list_info) \ +#define END_GROUP(list, list_info, parent_group) \ { \ - if (!(menu_settings_list_append(list, list_info, setting_group_setting (ST_END_GROUP, 0)))) return false; \ + if (!(menu_settings_list_append(list, list_info, setting_group_setting (ST_END_GROUP, 0, parent_group)))) return false; \ } -#define START_SUB_GROUP(list, list_info, NAME, group_info, subgroup_info) \ +#define START_SUB_GROUP(list, list_info, NAME, group_info, subgroup_info, parent_group) \ { \ subgroup_info.name = NAME; \ - if (!(menu_settings_list_append(list, list_info, setting_subgroup_setting (ST_SUB_GROUP, NAME, group_info)))) return false; \ + if (!(menu_settings_list_append(list, list_info, setting_subgroup_setting (ST_SUB_GROUP, NAME, group_info, parent_group)))) return false; \ } -#define END_SUB_GROUP(list, list_info) \ +#define END_SUB_GROUP(list, list_info, parent_group) \ { \ - if (!(menu_settings_list_append(list, list_info, setting_group_setting (ST_END_SUB_GROUP, 0)))) return false; \ + if (!(menu_settings_list_append(list, list_info, setting_group_setting (ST_END_SUB_GROUP, 0, parent_group)))) return false; \ } -#define CONFIG_ACTION(NAME, SHORT, group_info, subgroup_info) \ +#define CONFIG_ACTION(NAME, SHORT, group_info, subgroup_info, parent_group) \ { \ - if (!menu_settings_list_append(list, list_info, setting_action_setting (NAME, SHORT, group_info, subgroup_info))) return false; \ + if (!menu_settings_list_append(list, list_info, setting_action_setting (NAME, SHORT, group_info, subgroup_info, parent_group))) return false; \ } -#define CONFIG_BOOL(TARGET, NAME, SHORT, DEF, OFF, ON, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER) \ +#define CONFIG_BOOL(TARGET, NAME, SHORT, DEF, OFF, ON, group_info, subgroup_info, parent_group, CHANGE_HANDLER, READ_HANDLER) \ { \ - if (!menu_settings_list_append(list, list_info, setting_bool_setting (NAME, SHORT, &TARGET, DEF, OFF, ON, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER)))return false; \ + if (!menu_settings_list_append(list, list_info, setting_bool_setting (NAME, SHORT, &TARGET, DEF, OFF, ON, group_info, subgroup_info, parent_group, CHANGE_HANDLER, READ_HANDLER)))return false; \ } -#define CONFIG_INT(TARGET, NAME, SHORT, DEF, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER) \ +#define CONFIG_INT(TARGET, NAME, SHORT, DEF, group_info, subgroup_info, parent_group, CHANGE_HANDLER, READ_HANDLER) \ { \ - if (!(menu_settings_list_append(list, list_info, setting_int_setting (NAME, SHORT, &TARGET, DEF, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER)))) return false; \ + if (!(menu_settings_list_append(list, list_info, setting_int_setting (NAME, SHORT, &TARGET, DEF, group_info, subgroup_info, parent_group, CHANGE_HANDLER, READ_HANDLER)))) return false; \ } -#define CONFIG_UINT(TARGET, NAME, SHORT, DEF, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER) \ +#define CONFIG_UINT(TARGET, NAME, SHORT, DEF, group_info, subgroup_info, parent_group, CHANGE_HANDLER, READ_HANDLER) \ { \ - if (!(menu_settings_list_append(list, list_info, setting_uint_setting (NAME, SHORT, &TARGET, DEF, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER)))) return false; \ + if (!(menu_settings_list_append(list, list_info, setting_uint_setting (NAME, SHORT, &TARGET, DEF, group_info, subgroup_info, parent_group, CHANGE_HANDLER, READ_HANDLER)))) return false; \ } -#define CONFIG_FLOAT(TARGET, NAME, SHORT, DEF, ROUNDING, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER) \ +#define CONFIG_FLOAT(TARGET, NAME, SHORT, DEF, ROUNDING, group_info, subgroup_info, parent_group, CHANGE_HANDLER, READ_HANDLER) \ { \ - if (!(menu_settings_list_append(list, list_info, setting_float_setting (NAME, SHORT, &TARGET, DEF, ROUNDING, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER)))) return false; \ + if (!(menu_settings_list_append(list, list_info, setting_float_setting (NAME, SHORT, &TARGET, DEF, ROUNDING, group_info, subgroup_info, parent_group, CHANGE_HANDLER, READ_HANDLER)))) return false; \ } -#define CONFIG_PATH(TARGET, NAME, SHORT, DEF, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER) \ +#define CONFIG_PATH(TARGET, NAME, SHORT, DEF, group_info, subgroup_info, parent_group, CHANGE_HANDLER, READ_HANDLER) \ { \ - if (!(menu_settings_list_append(list, list_info, setting_string_setting(ST_PATH, NAME, SHORT, TARGET, sizeof(TARGET), DEF, "", group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER)))) return false; \ + if (!(menu_settings_list_append(list, list_info, setting_string_setting(ST_PATH, NAME, SHORT, TARGET, sizeof(TARGET), DEF, "", group_info, subgroup_info, parent_group, CHANGE_HANDLER, READ_HANDLER)))) return false; \ } -#define CONFIG_DIR(TARGET, NAME, SHORT, DEF, EMPTY, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER) \ +#define CONFIG_DIR(TARGET, NAME, SHORT, DEF, EMPTY, group_info, subgroup_info, parent_group, CHANGE_HANDLER, READ_HANDLER) \ { \ - if (!(menu_settings_list_append(list, list_info, setting_string_setting(ST_DIR, NAME, SHORT, TARGET, sizeof(TARGET), DEF, EMPTY, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER)))) return false; \ + if (!(menu_settings_list_append(list, list_info, setting_string_setting(ST_DIR, NAME, SHORT, TARGET, sizeof(TARGET), DEF, EMPTY, group_info, subgroup_info, parent_group, CHANGE_HANDLER, READ_HANDLER)))) return false; \ } -#define CONFIG_STRING(TARGET, NAME, SHORT, DEF, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER) \ +#define CONFIG_STRING(TARGET, NAME, SHORT, DEF, group_info, subgroup_info, parent_group, CHANGE_HANDLER, READ_HANDLER) \ { \ - if (!(menu_settings_list_append(list, list_info, setting_string_setting(ST_STRING, NAME, SHORT, TARGET, sizeof(TARGET), DEF, "", group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER)))) return false; \ + if (!(menu_settings_list_append(list, list_info, setting_string_setting(ST_STRING, NAME, SHORT, TARGET, sizeof(TARGET), DEF, "", group_info, subgroup_info, parent_group, CHANGE_HANDLER, READ_HANDLER)))) return false; \ } -#define CONFIG_STRING_OPTIONS(TARGET, NAME, SHORT, DEF, OPTS, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER) \ +#define CONFIG_STRING_OPTIONS(TARGET, NAME, SHORT, DEF, OPTS, group_info, subgroup_info, parent_group, CHANGE_HANDLER, READ_HANDLER) \ { \ - if (!(menu_settings_list_append(list, list_info, setting_string_setting_options(ST_STRING, NAME, SHORT, TARGET, sizeof(TARGET), DEF, "", OPTS, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER)))) return false; \ + if (!(menu_settings_list_append(list, list_info, setting_string_setting_options(ST_STRING, NAME, SHORT, TARGET, sizeof(TARGET), DEF, "", OPTS, group_info, subgroup_info, parent_group, CHANGE_HANDLER, READ_HANDLER)))) return false; \ } -#define CONFIG_HEX(TARGET, NAME, SHORT, DEF, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER) \ +#define CONFIG_HEX(TARGET, NAME, SHORT, DEF, group_info, subgroup_info, parent_group, CHANGE_HANDLER, READ_HANDLER) \ { \ - if (!(menu_settings_list_append(list, list_info, setting_hex_setting(NAME, SHORT, &TARGET, DEF, group_info, subgroup_info, CHANGE_HANDLER, READ_HANDLER)))) return false; \ + if (!(menu_settings_list_append(list, list_info, setting_hex_setting(NAME, SHORT, &TARGET, DEF, group_info, subgroup_info, parent_group, CHANGE_HANDLER, READ_HANDLER)))) return false; \ } -#define CONFIG_BIND(TARGET, PLAYER, PLAYER_OFFSET, NAME, SHORT, DEF, group_info, subgroup_info) \ +#define CONFIG_BIND(TARGET, PLAYER, PLAYER_OFFSET, NAME, SHORT, DEF, group_info, subgroup_info, parent_group) \ { \ - if (!(menu_settings_list_append(list, list_info, setting_bind_setting (NAME, SHORT, &TARGET, PLAYER, PLAYER_OFFSET, DEF, group_info, subgroup_info)))) return false; \ + if (!(menu_settings_list_append(list, list_info, setting_bind_setting (NAME, SHORT, &TARGET, PLAYER, PLAYER_OFFSET, DEF, group_info, subgroup_info, parent_group)))) return false; \ } #ifdef GEKKO @@ -3453,21 +3481,23 @@ static void overlay_enable_toggle_change_handler(void *data) static bool setting_append_list_main_menu_options( rarch_setting_t **list, - rarch_setting_info_t *list_info) + rarch_setting_info_t *list_info, + const char *parent_group) { rarch_setting_group_info_t group_info = {0}; rarch_setting_group_info_t subgroup_info = {0}; settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); - START_GROUP(group_info, "Main Menu"); - START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); + START_GROUP(group_info, "Main Menu", parent_group); + START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info, parent_group); #if defined(HAVE_DYNAMIC) || defined(HAVE_LIBRETRO_MANAGEMENT) CONFIG_ACTION( "core_list", "Core Selection", group_info.name, - subgroup_info.name); + subgroup_info.name, + parent_group); (*list)[list_info->index - 1].size = sizeof(settings->libretro); (*list)[list_info->index - 1].value.string = settings->libretro; (*list)[list_info->index - 1].values = EXT_EXECUTABLES; @@ -3486,7 +3516,8 @@ static bool setting_append_list_main_menu_options( "core_updater_list", "Core Updater", group_info.name, - subgroup_info.name); + subgroup_info.name, + parent_group); #endif #ifdef HAVE_LIBRETRODB @@ -3494,7 +3525,8 @@ static bool setting_append_list_main_menu_options( "content_collection_list", "Load Content (Collection)", group_info.name, - subgroup_info.name); + subgroup_info.name, + parent_group); #endif if (settings->history_list_enable) @@ -3503,7 +3535,8 @@ static bool setting_append_list_main_menu_options( "history_list", "Load Content (History)", group_info.name, - subgroup_info.name); + subgroup_info.name, + parent_group); } if (global->core_info && core_info_list_num_info_files(global->core_info)) { @@ -3511,14 +3544,16 @@ static bool setting_append_list_main_menu_options( "detect_core_list", "Load Content (Detect Core)", group_info.name, - subgroup_info.name); + subgroup_info.name, + parent_group); settings_data_list_current_add_flags(list, list_info, SD_FLAG_BROWSER_ACTION); } CONFIG_ACTION( "load_content", "Load Content", group_info.name, - subgroup_info.name); + subgroup_info.name, + parent_group); (*list)[list_info->index - 1].size = sizeof(global->fullpath); (*list)[list_info->index - 1].value.string = global->fullpath; (*list)[list_info->index - 1].action_left = load_content_action_toggle; @@ -3536,7 +3571,8 @@ static bool setting_append_list_main_menu_options( "unload_core", "Unload Core", group_info.name, - subgroup_info.name); + subgroup_info.name, + parent_group); menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_UNLOAD_CORE); } @@ -3544,32 +3580,37 @@ static bool setting_append_list_main_menu_options( "core_information", "Core Information", group_info.name, - subgroup_info.name); + subgroup_info.name, + parent_group); CONFIG_ACTION( "management", "Management", group_info.name, - subgroup_info.name); + subgroup_info.name, + parent_group); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); CONFIG_ACTION( "options", "Options", group_info.name, - subgroup_info.name); + subgroup_info.name, + parent_group); CONFIG_ACTION( "settings", "Settings", group_info.name, - subgroup_info.name); + subgroup_info.name, + parent_group); CONFIG_ACTION( "system_information", "System Information", group_info.name, - subgroup_info.name); + subgroup_info.name, + parent_group); if (global->perfcnt_enable) { @@ -3577,7 +3618,8 @@ static bool setting_append_list_main_menu_options( "performance_counters", "Performance Counters", group_info.name, - subgroup_info.name); + subgroup_info.name, + parent_group); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); } if (global->main_is_init && !global->libretro_dummy) @@ -3586,7 +3628,8 @@ static bool setting_append_list_main_menu_options( "savestate", "Save State", group_info.name, - subgroup_info.name); + subgroup_info.name, + "N/A"); (*list)[list_info->index - 1].action_left = &setting_action_left_savestates; (*list)[list_info->index - 1].action_right = &setting_action_right_savestates; (*list)[list_info->index - 1].action_start = &setting_action_start_savestates; @@ -3599,7 +3642,8 @@ static bool setting_append_list_main_menu_options( "loadstate", "Load State", group_info.name, - subgroup_info.name); + subgroup_info.name, + "N/A"); (*list)[list_info->index - 1].action_left = &setting_action_left_savestates; (*list)[list_info->index - 1].action_right = &setting_action_left_savestates; (*list)[list_info->index - 1].action_start = &setting_action_start_savestates; @@ -3612,14 +3656,16 @@ static bool setting_append_list_main_menu_options( "take_screenshot", "Take Screenshot", group_info.name, - subgroup_info.name); + subgroup_info.name, + parent_group); menu_settings_list_current_add_cmd (list, list_info, EVENT_CMD_TAKE_SCREENSHOT); CONFIG_ACTION( "resume_content", "Resume Content", group_info.name, - subgroup_info.name); + subgroup_info.name, + parent_group); menu_settings_list_current_add_cmd (list, list_info, EVENT_CMD_RESUME); (*list)[list_info->index - 1].action_ok = &setting_bool_action_ok_exit; (*list)[list_info->index - 1].action_select = &setting_bool_action_ok_exit; @@ -3628,7 +3674,8 @@ static bool setting_append_list_main_menu_options( "restart_content", "Restart Content", group_info.name, - subgroup_info.name); + subgroup_info.name, + parent_group); menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_RESET); (*list)[list_info->index - 1].action_ok = (*list)[list_info->index - 1].action_select = &setting_bool_action_ok_exit; @@ -3638,7 +3685,8 @@ static bool setting_append_list_main_menu_options( "restart_retroarch", "Restart RetroArch", group_info.name, - subgroup_info.name); + subgroup_info.name, + parent_group); menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_RESTART_RETROARCH); #endif @@ -3646,21 +3694,23 @@ static bool setting_append_list_main_menu_options( "configurations", "Configuration Files", group_info.name, - subgroup_info.name); + subgroup_info.name, + parent_group); CONFIG_ACTION( "save_new_config", "Save New Config", group_info.name, - subgroup_info.name); + subgroup_info.name, + parent_group); menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_MENU_SAVE_CONFIG); CONFIG_ACTION( "help", "Help", group_info.name, - subgroup_info.name); - + subgroup_info.name, + parent_group); #if !defined(IOS) /* Apple rejects iOS apps that lets you forcibly quit an application. */ @@ -3668,27 +3718,32 @@ static bool setting_append_list_main_menu_options( "quit_retroarch", "Quit RetroArch", group_info.name, - subgroup_info.name); + subgroup_info.name, + parent_group); menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_QUIT_RETROARCH); #endif - END_SUB_GROUP(list, list_info); - END_GROUP(list, list_info); + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); return true; } static bool setting_append_list_driver_options( rarch_setting_t **list, - rarch_setting_info_t *list_info) + rarch_setting_info_t *list_info, + const char *parent_group) { rarch_setting_group_info_t group_info = {0}; rarch_setting_group_info_t subgroup_info = {0}; settings_t *settings = config_get_ptr(); - START_GROUP(group_info, "Driver Settings"); + START_GROUP(group_info, "Driver Settings", parent_group); - START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); + parent_group = "Settings"; + + START_SUB_GROUP(list, list_info, "State", group_info.name, + subgroup_info, parent_group); CONFIG_STRING_OPTIONS( settings->input.driver, @@ -3698,6 +3753,7 @@ static bool setting_append_list_driver_options( config_get_input_driver_options(), group_info.name, subgroup_info.name, + parent_group, NULL, NULL); settings_data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); @@ -3710,6 +3766,7 @@ static bool setting_append_list_driver_options( config_get_joypad_driver_options(), group_info.name, subgroup_info.name, + parent_group, NULL, NULL); settings_data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); @@ -3722,6 +3779,7 @@ static bool setting_append_list_driver_options( config_get_video_driver_options(), group_info.name, subgroup_info.name, + parent_group, NULL, NULL); settings_data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); @@ -3734,6 +3792,7 @@ static bool setting_append_list_driver_options( config_get_audio_driver_options(), group_info.name, subgroup_info.name, + parent_group, NULL, NULL); settings_data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); @@ -3746,6 +3805,7 @@ static bool setting_append_list_driver_options( config_get_audio_resampler_driver_options(), group_info.name, subgroup_info.name, + parent_group, NULL, NULL); settings_data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); @@ -3758,6 +3818,7 @@ static bool setting_append_list_driver_options( config_get_camera_driver_options(), group_info.name, subgroup_info.name, + parent_group, NULL, NULL); settings_data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); @@ -3770,6 +3831,7 @@ static bool setting_append_list_driver_options( config_get_location_driver_options(), group_info.name, subgroup_info.name, + parent_group, NULL, NULL); settings_data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); @@ -3782,6 +3844,7 @@ static bool setting_append_list_driver_options( config_get_menu_driver_options(), group_info.name, subgroup_info.name, + parent_group, NULL, NULL); settings_data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); @@ -3794,27 +3857,32 @@ static bool setting_append_list_driver_options( config_get_record_driver_options(), group_info.name, subgroup_info.name, + parent_group, NULL, NULL); settings_data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); - END_SUB_GROUP(list, list_info); - END_GROUP(list, list_info); + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); return true; } static bool setting_append_list_core_options( rarch_setting_t **list, - rarch_setting_info_t *list_info) + rarch_setting_info_t *list_info, + const char *parent_group) { rarch_setting_group_info_t group_info = {0}; rarch_setting_group_info_t subgroup_info = {0}; settings_t *settings = config_get_ptr(); - START_GROUP(group_info, "Core Settings"); + START_GROUP(group_info, "Core Settings", parent_group); - START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); + parent_group = "Settings"; + + START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info, + parent_group); CONFIG_BOOL( settings->video.shared_context, @@ -3825,6 +3893,7 @@ static bool setting_append_list_core_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); @@ -3838,6 +3907,7 @@ static bool setting_append_list_core_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); @@ -3851,28 +3921,32 @@ static bool setting_append_list_core_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - END_SUB_GROUP(list, list_info); - - END_GROUP(list, list_info); + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); return true; } static bool setting_append_list_configuration_options( rarch_setting_t **list, - rarch_setting_info_t *list_info) + rarch_setting_info_t *list_info, + const char *parent_group) { rarch_setting_group_info_t group_info = {0}; rarch_setting_group_info_t subgroup_info = {0}; settings_t *settings = config_get_ptr(); - START_GROUP(group_info, "Configuration Settings"); + START_GROUP(group_info, "Configuration Settings", parent_group); - START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); + parent_group = "Settings"; + + START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info, + parent_group); CONFIG_BOOL(settings->config_save_on_exit, "config_save_on_exit", @@ -3882,6 +3956,7 @@ static bool setting_append_list_configuration_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -3894,6 +3969,7 @@ static bool setting_append_list_configuration_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -3906,6 +3982,7 @@ static bool setting_append_list_configuration_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -3918,28 +3995,31 @@ static bool setting_append_list_configuration_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); - END_SUB_GROUP(list, list_info); - - - END_GROUP(list, list_info); + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); return true; } static bool setting_append_list_saving_options( rarch_setting_t **list, - rarch_setting_info_t *list_info) + rarch_setting_info_t *list_info, + const char *parent_group) { rarch_setting_group_info_t group_info = {0}; rarch_setting_group_info_t subgroup_info = {0}; settings_t *settings = config_get_ptr(); - START_GROUP(group_info, "Saving Settings"); + START_GROUP(group_info, "Saving Settings", parent_group); - START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); + parent_group = "Settings"; + + START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info, + parent_group); CONFIG_BOOL( settings->sort_savefiles_enable, @@ -3950,6 +4030,7 @@ static bool setting_append_list_saving_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -3962,6 +4043,7 @@ static bool setting_append_list_saving_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -3974,6 +4056,7 @@ static bool setting_append_list_saving_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); @@ -3986,6 +4069,7 @@ static bool setting_append_list_saving_options( autosave_interval, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_AUTOSAVE_INIT); @@ -4004,6 +4088,7 @@ static bool setting_append_list_saving_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -4016,8 +4101,9 @@ static bool setting_append_list_saving_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, - general_read_handler); + general_read_handler); CONFIG_BOOL( settings->savestate_auto_load, @@ -4028,29 +4114,32 @@ static bool setting_append_list_saving_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); - - END_SUB_GROUP(list, list_info); - - END_GROUP(list, list_info); + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); return true; } static bool setting_append_list_logging_options( rarch_setting_t **list, - rarch_setting_info_t *list_info) + rarch_setting_info_t *list_info, + const char *parent_group) { rarch_setting_group_info_t group_info = {0}; rarch_setting_group_info_t subgroup_info = {0}; settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); - START_GROUP(group_info, "Logging Settings"); + START_GROUP(group_info, "Logging Settings", parent_group); - START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); + parent_group = "Settings"; + + START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info, + parent_group); CONFIG_BOOL( global->verbosity, @@ -4061,6 +4150,7 @@ static bool setting_append_list_logging_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); @@ -4072,6 +4162,7 @@ static bool setting_append_list_logging_options( libretro_log_level, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 3, 1.0, true, true); @@ -4079,9 +4170,10 @@ static bool setting_append_list_logging_options( &setting_get_string_representation_uint_libretro_log_level; settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - END_SUB_GROUP(list, list_info); + END_SUB_GROUP(list, list_info, parent_group); - START_SUB_GROUP(list, list_info, "Performance Counters", group_info.name, subgroup_info); + START_SUB_GROUP(list, list_info, "Performance Counters", group_info.name, subgroup_info, + parent_group); CONFIG_BOOL(global->perfcnt_enable, "perfcnt_enable", @@ -4091,29 +4183,31 @@ static bool setting_append_list_logging_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - - END_SUB_GROUP(list, list_info); - - END_GROUP(list, list_info); + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); return true; } static bool setting_append_list_frame_throttling_options( rarch_setting_t **list, - rarch_setting_info_t *list_info) + rarch_setting_info_t *list_info, + const char *parent_group) { rarch_setting_group_info_t group_info = {0}; rarch_setting_group_info_t subgroup_info = {0}; settings_t *settings = config_get_ptr(); - START_GROUP(group_info, "Frame Throttle Settings"); + START_GROUP(group_info, "Frame Throttle Settings", parent_group); - START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); + parent_group = "Settings"; + + START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info, parent_group); CONFIG_BOOL( settings->fastforward_ratio_throttle_enable, @@ -4124,6 +4218,7 @@ static bool setting_append_list_frame_throttling_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -4135,6 +4230,7 @@ static bool setting_append_list_frame_throttling_options( "%.1fx", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 1, 10, 0.1, true, true); @@ -4147,28 +4243,30 @@ static bool setting_append_list_frame_throttling_options( "%.1fx", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 1, 10, 1.0, true, true); - END_SUB_GROUP(list, list_info); - - END_GROUP(list, list_info); + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); return true; } static bool setting_append_list_rewind_options( rarch_setting_t **list, - rarch_setting_info_t *list_info) + rarch_setting_info_t *list_info, const char *parent_group) { rarch_setting_group_info_t group_info = {0}; rarch_setting_group_info_t subgroup_info = {0}; settings_t *settings = config_get_ptr(); - START_GROUP(group_info, "Rewind Settings"); + START_GROUP(group_info, "Rewind Settings", parent_group); - START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); + parent_group = "Settings"; + + START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info, parent_group); CONFIG_BOOL( @@ -4180,6 +4278,7 @@ static bool setting_append_list_rewind_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_REWIND_TOGGLE); @@ -4192,6 +4291,7 @@ static bool setting_append_list_rewind_options( rewind_buffer_size, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler) #endif @@ -4202,30 +4302,32 @@ static bool setting_append_list_rewind_options( rewind_granularity, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 1, 32768, 1, true, false); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - END_SUB_GROUP(list, list_info); - - END_GROUP(list, list_info); + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); return true; } static bool setting_append_list_recording_options( rarch_setting_t **list, - rarch_setting_info_t *list_info) + rarch_setting_info_t *list_info, const char *parent_group) { rarch_setting_group_info_t group_info = {0}; rarch_setting_group_info_t subgroup_info = {0}; settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); - START_GROUP(group_info, "Recording Settings"); + START_GROUP(group_info, "Recording Settings", parent_group); - START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); + parent_group = "Settings"; + + START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info, parent_group); CONFIG_BOOL( global->record.enable, @@ -4236,6 +4338,7 @@ static bool setting_append_list_recording_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -4246,6 +4349,7 @@ static bool setting_append_list_recording_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_values(list, list_info, "cfg"); @@ -4258,6 +4362,7 @@ static bool setting_append_list_recording_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); @@ -4271,12 +4376,13 @@ static bool setting_append_list_recording_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); - END_SUB_GROUP(list, list_info); + END_SUB_GROUP(list, list_info, parent_group); - START_SUB_GROUP(list, list_info, "Miscellaneous", group_info.name, subgroup_info); + START_SUB_GROUP(list, list_info, "Miscellaneous", group_info.name, subgroup_info, parent_group); CONFIG_BOOL( settings->video.post_filter_record, @@ -4287,6 +4393,7 @@ static bool setting_append_list_recording_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -4299,18 +4406,20 @@ static bool setting_append_list_recording_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); - END_SUB_GROUP(list, list_info); - END_GROUP(list, list_info); + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); return true; } static bool setting_append_list_video_options( rarch_setting_t **list, - rarch_setting_info_t *list_info) + rarch_setting_info_t *list_info, + const char *parent_group) { rarch_setting_group_info_t group_info = {0}; rarch_setting_group_info_t subgroup_info = {0}; @@ -4320,8 +4429,11 @@ static bool setting_append_list_video_options( (void)global; - START_GROUP(group_info, "Video Settings"); - START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); + START_GROUP(group_info, "Video Settings", parent_group); + + parent_group = "Settings"; + + START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info, parent_group); CONFIG_BOOL(settings->fps_show, "fps_show", @@ -4331,12 +4443,13 @@ static bool setting_append_list_video_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); - END_SUB_GROUP(list, list_info); - START_SUB_GROUP(list, list_info, "Monitor", group_info.name, subgroup_info); + END_SUB_GROUP(list, list_info, parent_group); + START_SUB_GROUP(list, list_info, "Monitor", group_info.name, subgroup_info, parent_group); CONFIG_UINT( settings->video.monitor_index, @@ -4345,6 +4458,7 @@ static bool setting_append_list_video_options( monitor_index, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_REINIT); @@ -4363,6 +4477,7 @@ static bool setting_append_list_video_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_REINIT); @@ -4377,6 +4492,7 @@ static bool setting_append_list_video_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -4387,6 +4503,7 @@ static bool setting_append_list_video_options( fullscreen_x, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); @@ -4398,6 +4515,7 @@ static bool setting_append_list_video_options( fullscreen_y, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); @@ -4410,6 +4528,7 @@ static bool setting_append_list_video_options( "%.3f Hz", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 0, 0.001, true, false); @@ -4422,6 +4541,7 @@ static bool setting_append_list_video_options( "%.3f Hz", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); (*list)[list_info->index - 1].action_start = &setting_action_start_video_refresh_rate_auto; @@ -4439,14 +4559,14 @@ static bool setting_append_list_video_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_REINIT); settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO|SD_FLAG_ADVANCED); - END_SUB_GROUP(list, list_info); - - START_SUB_GROUP(list, list_info, "Aspect", group_info.name, subgroup_info); + END_SUB_GROUP(list, list_info, parent_group); + START_SUB_GROUP(list, list_info, "Aspect", group_info.name, subgroup_info, parent_group); CONFIG_BOOL( settings->video.force_aspect, "video_force_aspect", @@ -4456,6 +4576,7 @@ static bool setting_append_list_video_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -4467,6 +4588,7 @@ static bool setting_append_list_video_options( "%.2f", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -4479,6 +4601,7 @@ static bool setting_append_list_video_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -4489,6 +4612,7 @@ static bool setting_append_list_video_options( aspect_ratio_idx, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_cmd( @@ -4507,9 +4631,8 @@ static bool setting_append_list_video_options( (*list)[list_info->index - 1].get_string_representation = &setting_get_string_representation_uint_aspect_ratio_index; - END_SUB_GROUP(list, list_info); - - START_SUB_GROUP(list, list_info, "Scaling", group_info.name, subgroup_info); + END_SUB_GROUP(list, list_info, parent_group); + START_SUB_GROUP(list, list_info, "Scaling", group_info.name, subgroup_info, parent_group); #if !defined(RARCH_CONSOLE) && !defined(RARCH_MOBILE) CONFIG_FLOAT( @@ -4520,6 +4643,7 @@ static bool setting_append_list_video_options( "%.1fx", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 1.0, 10.0, 1.0, true, true); @@ -4534,6 +4658,7 @@ static bool setting_append_list_video_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -4544,6 +4669,7 @@ static bool setting_append_list_video_options( 0, group_info.name, subgroup_info.name, + parent_group, NULL, NULL); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); @@ -4555,6 +4681,7 @@ static bool setting_append_list_video_options( 0, group_info.name, subgroup_info.name, + parent_group, NULL, NULL); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); @@ -4566,6 +4693,7 @@ static bool setting_append_list_video_options( 0, group_info.name, subgroup_info.name, + parent_group, NULL, NULL); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); @@ -4577,6 +4705,7 @@ static bool setting_append_list_video_options( 0, group_info.name, subgroup_info.name, + parent_group, NULL, NULL); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); @@ -4589,6 +4718,7 @@ static bool setting_append_list_video_options( video_viwidth, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 640, 720, 2, true, true); @@ -4602,6 +4732,7 @@ static bool setting_append_list_video_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); #endif @@ -4615,6 +4746,7 @@ static bool setting_append_list_video_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -4628,6 +4760,7 @@ static bool setting_append_list_video_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); #endif @@ -4639,6 +4772,7 @@ static bool setting_append_list_video_options( 0, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 3, 1, true, true); @@ -4654,6 +4788,7 @@ static bool setting_append_list_video_options( 0, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_cmd( @@ -4671,14 +4806,14 @@ static bool setting_append_list_video_options( settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO|SD_FLAG_ADVANCED); #endif - END_SUB_GROUP(list, list_info); - + END_SUB_GROUP(list, list_info, parent_group); START_SUB_GROUP( list, list_info, "Synchronization", group_info.name, - subgroup_info); + subgroup_info, + parent_group); #if defined(HAVE_THREADS) && !defined(RARCH_CONSOLE) CONFIG_BOOL( @@ -4690,6 +4825,7 @@ static bool setting_append_list_video_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_REINIT); @@ -4705,6 +4841,7 @@ static bool setting_append_list_video_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -4715,6 +4852,7 @@ static bool setting_append_list_video_options( swap_interval, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_VIDEO_SET_BLOCKING_STATE); @@ -4730,6 +4868,7 @@ static bool setting_append_list_video_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -4740,6 +4879,7 @@ static bool setting_append_list_video_options( hard_sync_frames, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 3, 1, true, true); @@ -4752,6 +4892,7 @@ static bool setting_append_list_video_options( frame_delay, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 15, 1, true, true); @@ -4767,17 +4908,18 @@ static bool setting_append_list_video_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); #endif - END_SUB_GROUP(list, list_info); - + END_SUB_GROUP(list, list_info, parent_group); START_SUB_GROUP( list, list_info, "Miscellaneous", group_info.name, - subgroup_info); + subgroup_info, + parent_group); CONFIG_BOOL( settings->video.gpu_screenshot, @@ -4788,6 +4930,7 @@ static bool setting_append_list_video_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); @@ -4801,6 +4944,7 @@ static bool setting_append_list_video_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); @@ -4814,6 +4958,7 @@ static bool setting_append_list_video_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -4827,6 +4972,7 @@ static bool setting_append_list_video_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_cmd( @@ -4843,26 +4989,31 @@ static bool setting_append_list_video_options( 0, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 5, 1, true, true); #endif - END_SUB_GROUP(list, list_info); - END_GROUP(list, list_info); + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); return true; } static bool setting_append_list_font_options( rarch_setting_t **list, - rarch_setting_info_t *list_info) + rarch_setting_info_t *list_info, + const char *parent_group) { rarch_setting_group_info_t group_info = {0}; rarch_setting_group_info_t subgroup_info = {0}; settings_t *settings = config_get_ptr(); - START_GROUP(group_info, "Onscreen Display Settings"); - START_SUB_GROUP(list, list_info, "Messages", group_info.name, subgroup_info); + START_GROUP(group_info, "Onscreen Display Settings", parent_group); + + parent_group = "Settings"; + + START_SUB_GROUP(list, list_info, "Messages", group_info.name, subgroup_info, parent_group); #ifndef RARCH_CONSOLE CONFIG_BOOL( @@ -4874,6 +5025,7 @@ static bool setting_append_list_font_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); #endif @@ -4885,6 +5037,7 @@ static bool setting_append_list_font_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); @@ -4897,6 +5050,7 @@ static bool setting_append_list_font_options( "%.1f", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 1.00, 100.00, 1.0, true, true); @@ -4909,6 +5063,7 @@ static bool setting_append_list_font_options( "%.3f", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 1, 0.01, true, true); @@ -4921,27 +5076,32 @@ static bool setting_append_list_font_options( "%.3f", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 1, 0.01, true, true); - END_SUB_GROUP(list, list_info); - END_GROUP(list, list_info); + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); return true; } static bool setting_append_list_audio_options( rarch_setting_t **list, - rarch_setting_info_t *list_info) + rarch_setting_info_t *list_info, + const char *parent_group) { rarch_setting_group_info_t group_info = {0}; rarch_setting_group_info_t subgroup_info = {0}; settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); - START_GROUP(group_info, "Audio Settings"); - START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); + START_GROUP(group_info, "Audio Settings", parent_group); + + parent_group = "Settings"; + + START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info, parent_group); (void)global; @@ -4954,6 +5114,7 @@ static bool setting_append_list_audio_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); @@ -4967,6 +5128,7 @@ static bool setting_append_list_audio_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -4978,6 +5140,7 @@ static bool setting_append_list_audio_options( "%.1f", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, -80, 12, 1.0, true, true); @@ -4992,18 +5155,22 @@ static bool setting_append_list_audio_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); #endif - END_SUB_GROUP(list, list_info); + END_SUB_GROUP(list, list_info, parent_group); + + parent_group = "Settings"; START_SUB_GROUP( list, list_info, "Synchronization", group_info.name, - subgroup_info); + subgroup_info, + parent_group); CONFIG_BOOL( settings->audio.sync, @@ -5014,6 +5181,7 @@ static bool setting_append_list_audio_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -5025,6 +5193,7 @@ static bool setting_append_list_audio_options( g_defaults.settings.out_latency : out_latency, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 1, 256, 1.0, true, true); @@ -5038,6 +5207,7 @@ static bool setting_append_list_audio_options( "%.3f", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_range( @@ -5058,6 +5228,7 @@ static bool setting_append_list_audio_options( "%.2f", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_range( @@ -5077,18 +5248,22 @@ static bool setting_append_list_audio_options( 0, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - END_SUB_GROUP(list, list_info); + END_SUB_GROUP(list, list_info, parent_group); + + parent_group = "Settings"; START_SUB_GROUP( list, list_info, "Miscellaneous", group_info.name, - subgroup_info); + subgroup_info, + parent_group); CONFIG_STRING( settings->audio.device, @@ -5097,6 +5272,7 @@ static bool setting_append_list_audio_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT | SD_FLAG_ADVANCED); @@ -5108,6 +5284,7 @@ static bool setting_append_list_audio_options( out_rate, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); @@ -5119,29 +5296,35 @@ static bool setting_append_list_audio_options( settings->audio.filter_dir, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_values(list, list_info, "dsp"); menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_DSP_FILTER_INIT); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); - END_SUB_GROUP(list, list_info); - END_GROUP(list, list_info); + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); return true; } static bool setting_append_list_input_hotkey_options( rarch_setting_t **list, - rarch_setting_info_t *list_info) + rarch_setting_info_t *list_info, + const char *parent_group) { unsigned i; rarch_setting_group_info_t group_info = {0}; rarch_setting_group_info_t subgroup_info = {0}; settings_t *settings = config_get_ptr(); - START_GROUP(group_info, "Input Hotkey Binds"); - START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); + START_GROUP(group_info, "Input Hotkey Binds", parent_group); + + parent_group = "Settings"; + + START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info, + parent_group); for (i = 0; i < RARCH_BIND_LIST_END; i ++) { @@ -5153,12 +5336,12 @@ static bool setting_append_list_input_hotkey_options( CONFIG_BIND(settings->input.binds[0][i], 0, 0, keybind->base, keybind->desc, &retro_keybinds_1[i], - group_info.name, subgroup_info.name); + group_info.name, subgroup_info.name, parent_group); menu_settings_list_current_add_bind_type(list, list_info, i + MENU_SETTINGS_BIND_BEGIN); } - END_SUB_GROUP(list, list_info); - END_GROUP(list, list_info); + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); return true; } @@ -5166,7 +5349,8 @@ static bool setting_append_list_input_hotkey_options( static bool setting_append_list_input_options( rarch_setting_t **list, - rarch_setting_info_t *list_info) + rarch_setting_info_t *list_info, + const char *parent_group) { unsigned user; rarch_setting_group_info_t group_info = {0}; @@ -5174,8 +5358,11 @@ static bool setting_append_list_input_options( settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); - START_GROUP(group_info, "Input Settings"); - START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); + START_GROUP(group_info, "Input Settings", parent_group); + + parent_group = "Settings"; + + START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info, parent_group); CONFIG_UINT( settings->input.max_users, @@ -5184,6 +5371,7 @@ static bool setting_append_list_input_options( MAX_USERS, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 1, MAX_USERS, 1, true, true); @@ -5197,6 +5385,7 @@ static bool setting_append_list_input_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -5209,6 +5398,7 @@ static bool setting_append_list_input_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -5221,6 +5411,7 @@ static bool setting_append_list_input_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -5233,6 +5424,7 @@ static bool setting_append_list_input_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -5245,17 +5437,19 @@ static bool setting_append_list_input_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); - END_SUB_GROUP(list, list_info); + END_SUB_GROUP(list, list_info, parent_group); START_SUB_GROUP( list, list_info, "Input Device Mapping", group_info.name, - subgroup_info); + subgroup_info, + parent_group); CONFIG_BOOL( global->menu.bind_mode_keyboard, @@ -5266,6 +5460,7 @@ static bool setting_append_list_input_options( "RetroKeyboard", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -5317,6 +5512,7 @@ static bool setting_append_list_input_options( user, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); (*list)[list_info->index - 1].index = user + 1; @@ -5335,6 +5531,7 @@ static bool setting_append_list_input_options( user, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); (*list)[list_info->index - 1].index = user + 1; @@ -5350,7 +5547,8 @@ static bool setting_append_list_input_options( key[user], label[user], group_info.name, - subgroup_info.name); + subgroup_info.name, + parent_group); (*list)[list_info->index - 1].index = user + 1; (*list)[list_info->index - 1].index_offset = user; (*list)[list_info->index - 1].action_start = &setting_action_start_bind_device; @@ -5363,7 +5561,8 @@ static bool setting_append_list_input_options( key_bind_all[user], label_bind_all[user], group_info.name, - subgroup_info.name); + subgroup_info.name, + parent_group); (*list)[list_info->index - 1].index = user + 1; (*list)[list_info->index - 1].index_offset = user; (*list)[list_info->index - 1].action_ok = &setting_action_ok_bind_all; @@ -5373,7 +5572,8 @@ static bool setting_append_list_input_options( key_bind_defaults[user], label_bind_defaults[user], group_info.name, - subgroup_info.name); + subgroup_info.name, + parent_group); (*list)[list_info->index - 1].index = user + 1; (*list)[list_info->index - 1].index_offset = user; (*list)[list_info->index - 1].action_ok = &setting_action_ok_bind_defaults; @@ -5385,7 +5585,8 @@ static bool setting_append_list_input_options( list_info, "Turbo/Deadzone", group_info.name, - subgroup_info); + subgroup_info, + parent_group); CONFIG_FLOAT( settings->input.axis_threshold, @@ -5395,6 +5596,7 @@ static bool setting_append_list_input_options( "%.3f", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 1.00, 0.001, true, true); @@ -5406,6 +5608,7 @@ static bool setting_append_list_input_options( turbo_period, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 1, 0, 1, true, false); @@ -5417,21 +5620,21 @@ static bool setting_append_list_input_options( turbo_duty_cycle, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 1, 0, 1, true, false); - END_SUB_GROUP(list, list_info); - - - END_GROUP(list, list_info); + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); return true; } static bool setting_append_list_overlay_options( rarch_setting_t **list, - rarch_setting_info_t *list_info) + rarch_setting_info_t *list_info, + const char *parent_group) { #ifdef HAVE_OVERLAY rarch_setting_group_info_t group_info = {0}; @@ -5439,8 +5642,11 @@ static bool setting_append_list_overlay_options( settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); - START_GROUP(group_info, "Onscreen Overlay Settings"); - START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); + START_GROUP(group_info, "Onscreen Overlay Settings", parent_group); + + parent_group = "Settings"; + + START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info, parent_group); CONFIG_BOOL( settings->input.overlay_enable, @@ -5451,6 +5657,7 @@ static bool setting_append_list_overlay_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); (*list)[list_info->index - 1].change_handler = overlay_enable_toggle_change_handler; @@ -5462,6 +5669,7 @@ static bool setting_append_list_overlay_options( global->overlay_dir, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_values(list, list_info, "cfg"); @@ -5476,6 +5684,7 @@ static bool setting_append_list_overlay_options( "%.2f", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_OVERLAY_SET_ALPHA_MOD); @@ -5490,14 +5699,15 @@ static bool setting_append_list_overlay_options( "%.2f", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_OVERLAY_SET_SCALE_FACTOR); menu_settings_list_current_add_range(list, list_info, 0, 2, 0.01, true, true); settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); - END_SUB_GROUP(list, list_info); - END_GROUP(list, list_info); + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); #endif return true; @@ -5505,7 +5715,8 @@ static bool setting_append_list_overlay_options( static bool setting_append_list_osk_overlay_options( rarch_setting_t **list, - rarch_setting_info_t *list_info) + rarch_setting_info_t *list_info, + const char *parent_group) { #ifdef HAVE_OVERLAY rarch_setting_group_info_t group_info = {0}; @@ -5513,8 +5724,11 @@ static bool setting_append_list_osk_overlay_options( settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); - START_GROUP(group_info, "Onscreen Keyboard Overlay Settings"); - START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); + START_GROUP(group_info, "Onscreen Keyboard Overlay Settings", parent_group); + + parent_group = "Settings"; + + START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info, parent_group); CONFIG_BOOL( settings->osk.enable, @@ -5525,6 +5739,7 @@ static bool setting_append_list_osk_overlay_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -5535,13 +5750,14 @@ static bool setting_append_list_osk_overlay_options( global->osk_overlay_dir, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_values(list, list_info, "cfg"); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); - END_SUB_GROUP(list, list_info); - END_GROUP(list, list_info); + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); #endif return true; @@ -5549,14 +5765,18 @@ static bool setting_append_list_osk_overlay_options( static bool setting_append_list_menu_options( rarch_setting_t **list, - rarch_setting_info_t *list_info) + rarch_setting_info_t *list_info, + const char *parent_group) { rarch_setting_group_info_t group_info = {0}; rarch_setting_group_info_t subgroup_info = {0}; settings_t *settings = config_get_ptr(); - START_GROUP(group_info, "Menu Settings"); - START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); + START_GROUP(group_info, "Menu Settings", parent_group); + + parent_group = "Settings"; + + START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info, parent_group); CONFIG_PATH( settings->menu.wallpaper, @@ -5565,6 +5785,7 @@ static bool setting_append_list_menu_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_values(list, list_info, "png"); @@ -5579,6 +5800,7 @@ static bool setting_append_list_menu_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -5591,6 +5813,7 @@ static bool setting_append_list_menu_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_MENU_PAUSE_LIBRETRO); @@ -5605,6 +5828,7 @@ static bool setting_append_list_menu_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -5617,12 +5841,13 @@ static bool setting_append_list_menu_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); - END_SUB_GROUP(list, list_info); + END_SUB_GROUP(list, list_info, parent_group); - START_SUB_GROUP(list, list_info, "Navigation", group_info.name, subgroup_info); + START_SUB_GROUP(list, list_info, "Navigation", group_info.name, subgroup_info, parent_group); CONFIG_BOOL( settings->menu.navigation.wraparound.horizontal_enable, @@ -5633,6 +5858,7 @@ static bool setting_append_list_menu_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); @@ -5646,13 +5872,13 @@ static bool setting_append_list_menu_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - END_SUB_GROUP(list, list_info); - - START_SUB_GROUP(list, list_info, "Settings View", group_info.name, subgroup_info); + END_SUB_GROUP(list, list_info, parent_group); + START_SUB_GROUP(list, list_info, "Settings View", group_info.name, subgroup_info, parent_group); CONFIG_BOOL( settings->menu.collapse_subgroups_enable, @@ -5663,6 +5889,7 @@ static bool setting_append_list_menu_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); @@ -5676,6 +5903,7 @@ static bool setting_append_list_menu_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -5689,6 +5917,7 @@ static bool setting_append_list_menu_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); #endif @@ -5701,6 +5930,7 @@ static bool setting_append_list_menu_options( menu_entry_normal_color, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); @@ -5713,6 +5943,7 @@ static bool setting_append_list_menu_options( menu_entry_hover_color, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); @@ -5725,14 +5956,14 @@ static bool setting_append_list_menu_options( menu_title_color, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); - END_SUB_GROUP(list, list_info); - - START_SUB_GROUP(list, list_info, "Browser", group_info.name, subgroup_info); + END_SUB_GROUP(list, list_info, parent_group); + START_SUB_GROUP(list, list_info, "Browser", group_info.name, subgroup_info, parent_group); CONFIG_BOOL( settings->menu.navigation.browser.filter.supported_extensions_enable, @@ -5743,6 +5974,7 @@ static bool setting_append_list_menu_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -5755,6 +5987,7 @@ static bool setting_append_list_menu_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -5767,6 +6000,7 @@ static bool setting_append_list_menu_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -5779,13 +6013,13 @@ static bool setting_append_list_menu_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); - END_SUB_GROUP(list, list_info); - - START_SUB_GROUP(list, list_info, "Display", group_info.name, subgroup_info); + END_SUB_GROUP(list, list_info, parent_group); + START_SUB_GROUP(list, list_info, "Display", group_info.name, subgroup_info, parent_group); CONFIG_BOOL( settings->menu.dpi.override_enable, @@ -5796,6 +6030,7 @@ static bool setting_append_list_menu_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -5806,27 +6041,31 @@ static bool setting_append_list_menu_options( menu_dpi_override_value, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 72, 999, 1, true, true); - END_SUB_GROUP(list, list_info); - - END_GROUP(list, list_info); + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); return true; } static bool setting_append_list_ui_options( rarch_setting_t **list, - rarch_setting_info_t *list_info) + rarch_setting_info_t *list_info, + const char *parent_group) { rarch_setting_group_info_t group_info = {0}; rarch_setting_group_info_t subgroup_info = {0}; settings_t *settings = config_get_ptr(); - START_GROUP(group_info, "UI Settings"); - START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); + START_GROUP(group_info, "UI Settings", parent_group); + + parent_group = "Settings"; + + START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info, parent_group); CONFIG_BOOL( settings->video.disable_composition, @@ -5837,6 +6076,7 @@ static bool setting_append_list_ui_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_REINIT); @@ -5851,6 +6091,7 @@ static bool setting_append_list_ui_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -5863,6 +6104,7 @@ static bool setting_append_list_ui_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); @@ -5876,6 +6118,7 @@ static bool setting_append_list_ui_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -5888,26 +6131,30 @@ static bool setting_append_list_ui_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); - END_SUB_GROUP(list, list_info); - - END_GROUP(list, list_info); + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); return true; } static bool setting_append_list_archive_options( rarch_setting_t **list, - rarch_setting_info_t *list_info) + rarch_setting_info_t *list_info, + const char *parent_group) { rarch_setting_group_info_t group_info = {0}; rarch_setting_group_info_t subgroup_info = {0}; settings_t *settings = config_get_ptr(); - START_GROUP(group_info, "Archive Settings"); - START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); + START_GROUP(group_info, "Archive Settings", parent_group); + + parent_group = "Settings"; + + START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info, parent_group); CONFIG_UINT( settings->archive.mode, @@ -5916,30 +6163,31 @@ static bool setting_append_list_archive_options( 0, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 2, 1, true, true); (*list)[list_info->index - 1].get_string_representation = &setting_get_string_representation_uint_archive_mode; - END_SUB_GROUP(list, list_info); - END_GROUP(list, list_info); + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); return true; } static bool setting_append_list_core_updater_options( rarch_setting_t **list, - rarch_setting_info_t *list_info) + rarch_setting_info_t *list_info, + const char *parent_group) { #ifdef HAVE_NETWORKING rarch_setting_group_info_t group_info = {0}; rarch_setting_group_info_t subgroup_info = {0}; settings_t *settings = config_get_ptr(); - START_GROUP(group_info, "Core Updater Settings"); - - START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); + START_GROUP(group_info, "Core Updater Settings", parent_group); + START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info, parent_group); CONFIG_STRING( settings->network.buildbot_url, @@ -5948,6 +6196,7 @@ static bool setting_append_list_core_updater_options( buildbot_server_url, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); @@ -5959,6 +6208,7 @@ static bool setting_append_list_core_updater_options( buildbot_assets_server_url, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); @@ -5972,11 +6222,12 @@ static bool setting_append_list_core_updater_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); - END_SUB_GROUP(list, list_info); - END_GROUP(list, list_info); + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); #endif return true; @@ -5984,7 +6235,8 @@ static bool setting_append_list_core_updater_options( static bool setting_append_list_netplay_options( rarch_setting_t **list, - rarch_setting_info_t *list_info) + rarch_setting_info_t *list_info, + const char *parent_group) { #ifdef HAVE_NETPLAY rarch_setting_group_info_t group_info = {0}; @@ -5992,9 +6244,11 @@ static bool setting_append_list_netplay_options( settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); - START_GROUP(group_info, "Network Settings"); + START_GROUP(group_info, "Network Settings", parent_group); - START_SUB_GROUP(list, list_info, "Netplay", group_info.name, subgroup_info); + parent_group = "Settings"; + + START_SUB_GROUP(list, list_info, "Netplay", group_info.name, subgroup_info, parent_group); CONFIG_BOOL( global->netplay_enable, @@ -6005,6 +6259,7 @@ static bool setting_append_list_netplay_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -6017,6 +6272,7 @@ static bool setting_append_list_netplay_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -6027,6 +6283,7 @@ static bool setting_append_list_netplay_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); @@ -6040,6 +6297,7 @@ static bool setting_append_list_netplay_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -6052,6 +6310,7 @@ static bool setting_append_list_netplay_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -6062,6 +6321,7 @@ static bool setting_append_list_netplay_options( 0, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 10, 1, true, false); @@ -6074,19 +6334,21 @@ static bool setting_append_list_netplay_options( RARCH_DEFAULT_PORT, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 1, 99999, 1, true, true); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); - END_SUB_GROUP(list, list_info); + END_SUB_GROUP(list, list_info, parent_group); START_SUB_GROUP( list, list_info, "Miscellaneous", group_info.name, - subgroup_info); + subgroup_info, + parent_group); #if defined(HAVE_NETWORK_CMD) @@ -6099,6 +6361,7 @@ static bool setting_append_list_netplay_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); @@ -6110,6 +6373,7 @@ static bool setting_append_list_netplay_options( network_cmd_port, group_info.name, subgroup_info.name, + parent_group, NULL, NULL); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); @@ -6123,12 +6387,13 @@ static bool setting_append_list_netplay_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); #endif - END_SUB_GROUP(list, list_info); - END_GROUP(list, list_info); + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); #endif return true; @@ -6137,12 +6402,16 @@ static bool setting_append_list_netplay_options( #if 0 static bool setting_append_list_patch_options( rarch_setting_t **list, - rarch_setting_info_t *list_info) + rarch_setting_info_t *list_info, + const char *parent_group) { rarch_setting_group_info_t group_info = {0}; rarch_setting_group_info_t subgroup_info = {0}; - START_GROUP(group_info, "Patch Settings"); + START_GROUP(group_info, "Patch Settings", parent_group); + + parent_group = "Settings"; + START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); CONFIG_BOOL( @@ -6181,8 +6450,8 @@ static bool setting_append_list_patch_options( general_write_handler, general_read_handler); - END_SUB_GROUP(list, list_info); - END_GROUP(list, list_info); + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); return true; } @@ -6190,14 +6459,18 @@ static bool setting_append_list_patch_options( static bool setting_append_list_playlist_options( rarch_setting_t **list, - rarch_setting_info_t *list_info) + rarch_setting_info_t *list_info, + const char *parent_group) { rarch_setting_group_info_t group_info = {0}; rarch_setting_group_info_t subgroup_info = {0}; settings_t *settings = config_get_ptr(); - START_GROUP(group_info, "Playlist Settings"); - START_SUB_GROUP(list, list_info, "History", group_info.name, subgroup_info); + START_GROUP(group_info, "Playlist Settings", parent_group); + + parent_group = "Settings"; + + START_SUB_GROUP(list, list_info, "History", group_info.name, subgroup_info, parent_group); CONFIG_BOOL( settings->history_list_enable, @@ -6208,6 +6481,7 @@ static bool setting_append_list_playlist_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -6218,26 +6492,31 @@ static bool setting_append_list_playlist_options( default_content_history_size, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 0, 1.0, true, false); - END_SUB_GROUP(list, list_info); - END_GROUP(list, list_info); + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); return true; } static bool setting_append_list_user_options( rarch_setting_t **list, - rarch_setting_info_t *list_info) + rarch_setting_info_t *list_info, + const char *parent_group) { rarch_setting_group_info_t group_info = {0}; rarch_setting_group_info_t subgroup_info = {0}; settings_t *settings = config_get_ptr(); - START_GROUP(group_info, "User Settings"); - START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); + START_GROUP(group_info, "User Settings", parent_group); + + parent_group = "Settings"; + + START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info, parent_group); CONFIG_STRING( settings->username, @@ -6246,6 +6525,7 @@ static bool setting_append_list_user_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); @@ -6257,6 +6537,7 @@ static bool setting_append_list_user_options( def_user_language, group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_range( @@ -6271,24 +6552,27 @@ static bool setting_append_list_user_options( (*list)[list_info->index - 1].get_string_representation = &setting_get_string_representation_uint_user_language; - END_SUB_GROUP(list, list_info); - END_GROUP(list, list_info); + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); return true; } static bool setting_append_list_directory_options( rarch_setting_t **list, - rarch_setting_info_t *list_info) + rarch_setting_info_t *list_info, + const char *parent_group) { rarch_setting_group_info_t group_info = {0}; rarch_setting_group_info_t subgroup_info = {0}; settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); - START_GROUP(group_info, "Directory Settings"); + START_GROUP(group_info, "Directory Settings", parent_group); - START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info); + parent_group = "Settings"; + + START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info, parent_group); CONFIG_DIR( settings->core_assets_directory, @@ -6298,6 +6582,7 @@ static bool setting_append_list_directory_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags( @@ -6313,6 +6598,7 @@ static bool setting_append_list_directory_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags( @@ -6328,6 +6614,7 @@ static bool setting_append_list_directory_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags( @@ -6343,6 +6630,7 @@ static bool setting_append_list_directory_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags( @@ -6359,6 +6647,7 @@ static bool setting_append_list_directory_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags( @@ -6375,6 +6664,7 @@ static bool setting_append_list_directory_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_CORE_INFO_INIT); @@ -6391,6 +6681,7 @@ static bool setting_append_list_directory_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_CORE_INFO_INIT); @@ -6408,6 +6699,7 @@ static bool setting_append_list_directory_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags( @@ -6423,6 +6715,7 @@ static bool setting_append_list_directory_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags( @@ -6439,6 +6732,7 @@ static bool setting_append_list_directory_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags( @@ -6454,6 +6748,7 @@ static bool setting_append_list_directory_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags( @@ -6469,6 +6764,7 @@ static bool setting_append_list_directory_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags( @@ -6484,6 +6780,7 @@ static bool setting_append_list_directory_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags( @@ -6499,6 +6796,7 @@ static bool setting_append_list_directory_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags( @@ -6514,6 +6812,7 @@ static bool setting_append_list_directory_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags( @@ -6530,6 +6829,7 @@ static bool setting_append_list_directory_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags( @@ -6545,6 +6845,7 @@ static bool setting_append_list_directory_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags( @@ -6561,6 +6862,7 @@ static bool setting_append_list_directory_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags( @@ -6576,6 +6878,7 @@ static bool setting_append_list_directory_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags( @@ -6591,6 +6894,7 @@ static bool setting_append_list_directory_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags( @@ -6606,6 +6910,7 @@ static bool setting_append_list_directory_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags( @@ -6621,6 +6926,7 @@ static bool setting_append_list_directory_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags( @@ -6636,6 +6942,7 @@ static bool setting_append_list_directory_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags( @@ -6651,6 +6958,7 @@ static bool setting_append_list_directory_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags( @@ -6666,29 +6974,35 @@ static bool setting_append_list_directory_options( "", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); settings_data_list_current_add_flags( list, list_info, SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); - END_SUB_GROUP(list, list_info); - END_GROUP(list, list_info); + + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); return true; } static bool setting_append_list_privacy_options( rarch_setting_t **list, - rarch_setting_info_t *list_info) + rarch_setting_info_t *list_info, + const char *parent_group) { rarch_setting_group_info_t group_info = {0}; rarch_setting_group_info_t subgroup_info = {0}; settings_t *settings = config_get_ptr(); - START_GROUP(group_info, "Privacy Settings"); + START_GROUP(group_info, "Privacy Settings", parent_group); + + parent_group = "Settings"; + START_SUB_GROUP(list, list_info, "State", - group_info.name, subgroup_info); + group_info.name, subgroup_info, parent_group); CONFIG_BOOL( settings->camera.allow, @@ -6699,6 +7013,7 @@ static bool setting_append_list_privacy_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); @@ -6711,10 +7026,12 @@ static bool setting_append_list_privacy_options( "ON", group_info.name, subgroup_info.name, + parent_group, general_write_handler, general_read_handler); - END_SUB_GROUP(list, list_info); - END_GROUP(list, list_info); + + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); return true; } @@ -6722,6 +7039,7 @@ static bool setting_append_list_privacy_options( static bool setting_append_list_input_player_options( rarch_setting_t **list, rarch_setting_info_t *list_info, + const char *parent_group, unsigned user) { /* This constants matches the string length. @@ -6743,14 +7061,17 @@ static bool setting_append_list_input_player_options( snprintf(group_lbl[user], sizeof(group_lbl[user]), "Input %s Binds", buffer[user]); - START_GROUP(group_info, group_lbl[user]); + START_GROUP(group_info, group_lbl[user], parent_group); + + parent_group = "Settings"; START_SUB_GROUP( list, list_info, buffer[user], group_info.name, - subgroup_info); + subgroup_info, + parent_group); for (i = 0; i < RARCH_BIND_LIST_END; i ++) { @@ -6796,12 +7117,14 @@ static bool setting_append_list_input_player_options( strdup(label), &defaults[i], group_info.name, - subgroup_info.name); + subgroup_info.name, + parent_group); menu_settings_list_current_add_bind_type(list, list_info, i + MENU_SETTINGS_BIND_BEGIN); } } - END_SUB_GROUP(list, list_info); - END_GROUP(list, list_info); + + END_SUB_GROUP(list, list_info, parent_group); + END_GROUP(list, list_info, parent_group); return true; } @@ -6833,55 +7156,55 @@ rarch_setting_t *menu_setting_new(unsigned mask) if (mask & SL_FLAG_MAIN_MENU) { - if (!setting_append_list_main_menu_options(&list, list_info)) + if (!setting_append_list_main_menu_options(&list, list_info, "Main Menu")) goto error; } if (mask & SL_FLAG_DRIVER_OPTIONS) { - if (!setting_append_list_driver_options(&list, list_info)) + if (!setting_append_list_driver_options(&list, list_info, "Main Menu")) goto error; } if (mask & SL_FLAG_CORE_OPTIONS) { - if (!setting_append_list_core_options(&list, list_info)) + if (!setting_append_list_core_options(&list, list_info, "Main Menu")) goto error; } if (mask & SL_FLAG_CONFIGURATION_OPTIONS) { - if (!setting_append_list_configuration_options(&list, list_info)) + if (!setting_append_list_configuration_options(&list, list_info, "Main Menu")) goto error; } if (mask & SL_FLAG_LOGGING_OPTIONS) { - if (!setting_append_list_logging_options(&list, list_info)) + if (!setting_append_list_logging_options(&list, list_info, "Main Menu")) goto error; } if (mask & SL_FLAG_SAVING_OPTIONS) { - if (!setting_append_list_saving_options(&list, list_info)) + if (!setting_append_list_saving_options(&list, list_info, "Main Menu")) goto error; } if (mask & SL_FLAG_REWIND_OPTIONS) { - if (!setting_append_list_rewind_options(&list, list_info)) + if (!setting_append_list_rewind_options(&list, list_info, "Main Menu")) goto error; } if (mask & SL_FLAG_VIDEO_OPTIONS) { - if (!setting_append_list_video_options(&list, list_info)) + if (!setting_append_list_video_options(&list, list_info, "Main Menu")) goto error; } if (mask & SL_FLAG_AUDIO_OPTIONS) { - if (!setting_append_list_audio_options(&list, list_info)) + if (!setting_append_list_audio_options(&list, list_info, "Main Menu")) goto error; } @@ -6890,112 +7213,110 @@ rarch_setting_t *menu_setting_new(unsigned mask) unsigned user; settings_t *settings = config_get_ptr(); - if (!setting_append_list_input_options(&list, list_info)) + if (!setting_append_list_input_options(&list, list_info, "Main Menu")) goto error; for (user = 0; user < settings->input.max_users; user++) - setting_append_list_input_player_options(&list, list_info, user); + setting_append_list_input_player_options(&list, list_info, "Main Menu", user); } if (mask & SL_FLAG_INPUT_HOTKEY_OPTIONS) { - if (!setting_append_list_input_hotkey_options(&list, list_info)) + if (!setting_append_list_input_hotkey_options(&list, list_info, "Main Menu")) goto error; } if (mask & SL_FLAG_RECORDING_OPTIONS) { - if (!setting_append_list_recording_options(&list, list_info)) + if (!setting_append_list_recording_options(&list, list_info, "Main Menu")) goto error; } if (mask & SL_FLAG_FRAME_THROTTLE_OPTIONS) { - if (!setting_append_list_frame_throttling_options(&list, list_info)) + if (!setting_append_list_frame_throttling_options(&list, list_info, "Main Menu")) goto error; } if (mask & SL_FLAG_FONT_OPTIONS) { - if (!setting_append_list_font_options(&list, list_info)) + if (!setting_append_list_font_options(&list, list_info, "Main Menu")) goto error; } if (mask & SL_FLAG_OVERLAY_OPTIONS) { - if (!setting_append_list_overlay_options(&list, list_info)) + if (!setting_append_list_overlay_options(&list, list_info, "Main Menu")) goto error; } if (mask & SL_FLAG_OSK_OVERLAY_OPTIONS) { - if (!setting_append_list_osk_overlay_options(&list, list_info)) + if (!setting_append_list_osk_overlay_options(&list, list_info, "Main Menu")) goto error; } - - if (mask & SL_FLAG_MENU_OPTIONS) { - if (!setting_append_list_menu_options(&list, list_info)) + if (!setting_append_list_menu_options(&list, list_info, "Main Menu")) goto error; } if (mask & SL_FLAG_UI_OPTIONS) { - if (!setting_append_list_ui_options(&list, list_info)) + if (!setting_append_list_ui_options(&list, list_info, "Main Menu")) goto error; } #if 0 if (mask & SL_FLAG_PATCH_OPTIONS) { - if (!setting_append_list_patch_options(&list, list_info)) + if (!setting_append_list_patch_options(&list, list_info, "Main Menu")) goto error; } #endif if (mask & SL_FLAG_PLAYLIST_OPTIONS) { - if (!setting_append_list_playlist_options(&list, list_info)) + if (!setting_append_list_playlist_options(&list, list_info, "Main Menu")) goto error; } if (mask & SL_FLAG_CORE_UPDATER_OPTIONS) { - if (!setting_append_list_core_updater_options(&list, list_info)) + if (!setting_append_list_core_updater_options(&list, list_info, "Main Menu")) goto error; } if (mask & SL_FLAG_NETPLAY_OPTIONS) { - if (!setting_append_list_netplay_options(&list, list_info)) + if (!setting_append_list_netplay_options(&list, list_info, "Main Menu")) goto error; } if (mask & SL_FLAG_ARCHIVE_OPTIONS) { - if (!setting_append_list_archive_options(&list, list_info)) + if (!setting_append_list_archive_options(&list, list_info, "Main Menu")) goto error; } if (mask & SL_FLAG_USER_OPTIONS) { - if (!setting_append_list_user_options(&list, list_info)) + if (!setting_append_list_user_options(&list, list_info, "Main Menu")) goto error; } if (mask & SL_FLAG_DIRECTORY_OPTIONS) { - if (!setting_append_list_directory_options(&list, list_info)) + if (!setting_append_list_directory_options(&list, list_info, "Main Menu")) goto error; } if (mask & SL_FLAG_PRIVACY_OPTIONS) { - if (!setting_append_list_privacy_options(&list, list_info)) + if (!setting_append_list_privacy_options(&list, list_info, "Main Menu")) goto error; } diff --git a/menu/menu_setting.h b/menu/menu_setting.h index 1aeda4de6b..5526f6c1e8 100644 --- a/menu/menu_setting.h +++ b/menu/menu_setting.h @@ -135,6 +135,7 @@ typedef struct rarch_setting const char *short_description; const char *group; const char *subgroup; + const char *parent_group; const char *values; uint32_t index;