From 0fd812049c5b4ae39d38cec7f8a7edcc80637c5a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 15 Oct 2014 21:38:30 +0200 Subject: [PATCH] Reimplement deferred_push_settings --- frontend/menu/menu_entries.c | 18 +----------------- frontend/menu/menu_entries.h | 2 ++ frontend/menu/menu_entries_cbs.c | 19 ++++++++++++++++++- 3 files changed, 21 insertions(+), 18 deletions(-) diff --git a/frontend/menu/menu_entries.c b/frontend/menu/menu_entries.c index a809447d5b..88f6a901ce 100644 --- a/frontend/menu/menu_entries.c +++ b/frontend/menu/menu_entries.c @@ -130,7 +130,7 @@ void menu_entries_pop_list(file_list_t *list) } } -static int setting_set_flags(rarch_setting_t *setting) +int setting_set_flags(rarch_setting_t *setting) { if (setting->flags & SD_FLAG_ALLOW_INPUT) return MENU_FILE_LINEFEED; @@ -223,22 +223,6 @@ int push_list(menu_handle_t *menu, setting->name, setting_set_flags(setting), 0); } } - else if (!strcmp(label, "settings")) - { - settings_list_free(menu->list_settings); - menu->list_settings = (rarch_setting_t *)setting_data_new(SL_FLAG_ALL_SETTINGS); - rarch_setting_t *setting = (rarch_setting_t*)setting_data_find_setting(menu->list_settings, - "Driver Options"); - - file_list_clear(list); - - for (; setting->type != ST_NONE; setting++) - { - if (setting->type == ST_GROUP) - file_list_push(list, setting->short_description, - setting->name, setting_set_flags(setting), 0); - } - } else if (!strcmp(label, "Input Options")) { settings_list_free(menu->list_settings); diff --git a/frontend/menu/menu_entries.h b/frontend/menu/menu_entries.h index 7d27b20bb4..bd0f9bae91 100644 --- a/frontend/menu/menu_entries.h +++ b/frontend/menu/menu_entries.h @@ -54,6 +54,8 @@ void entries_refresh(file_list_t *list); void menu_build_scroll_indices(file_list_t *list); +int setting_set_flags(rarch_setting_t *setting); + #ifdef __cplusplus } #endif diff --git a/frontend/menu/menu_entries_cbs.c b/frontend/menu/menu_entries_cbs.c index 7f0c07457c..e3c76cf6c2 100644 --- a/frontend/menu/menu_entries_cbs.c +++ b/frontend/menu/menu_entries_cbs.c @@ -1512,7 +1512,24 @@ static int deferred_push_settings(void *data, void *userdata, if (!list || !menu_list) return -1; - return push_list(driver.menu, list, path, label, type); + settings_list_free(driver.menu->list_settings); + driver.menu->list_settings = (rarch_setting_t *)setting_data_new(SL_FLAG_ALL_SETTINGS); + rarch_setting_t *setting = (rarch_setting_t*)setting_data_find_setting(driver.menu->list_settings, + "Driver Options"); + + file_list_clear(list); + + for (; setting->type != ST_NONE; setting++) + { + if (setting->type == ST_GROUP) + file_list_push(list, setting->short_description, + setting->name, setting_set_flags(setting), 0); + } + + if (driver.menu_ctx && driver.menu_ctx->populate_entries) + driver.menu_ctx->populate_entries(driver.menu, path, label, type); + + return 0; } static int deferred_push_category(void *data, void *userdata,