Add need_refresh parameter to setting_data_get_list

This commit is contained in:
twinaphex 2014-10-07 02:49:04 +02:00
parent 0aa4465aa4
commit 8dbe11613d
12 changed files with 76 additions and 76 deletions

View File

@ -128,7 +128,7 @@ NSWindowDelegate>
NSMutableArray* thisGroup = nil; NSMutableArray* thisGroup = nil;
NSMutableArray* thisSubGroup = nil; NSMutableArray* thisSubGroup = nil;
self.settings = [NSMutableArray array]; self.settings = [NSMutableArray array];
setting_data = (const rarch_setting_t *)setting_data_get_list(); setting_data = (const rarch_setting_t *)setting_data_get_list(true);
for (i = 0; setting_data[i].type; i ++) for (i = 0; setting_data[i].type; i ++)
{ {
@ -246,7 +246,7 @@ NSWindowDelegate>
{ {
char buffer[PATH_MAX]; char buffer[PATH_MAX];
rarch_setting_t* setting_data, *setting = NULL; rarch_setting_t* setting_data, *setting = NULL;
setting_data = (rarch_setting_t*)setting_data_get_list(); setting_data = (rarch_setting_t*)setting_data_get_list(false);
setting = (rarch_setting_t*)&setting_data[[item intValue]]; setting = (rarch_setting_t*)&setting_data[[item intValue]];
if ([[tableColumn identifier] isEqualToString:BOXSTRING("left")]) if ([[tableColumn identifier] isEqualToString:BOXSTRING("left")])
@ -282,7 +282,7 @@ NSWindowDelegate>
if ([[tableColumn identifier] isEqualToString:BOXSTRING("left")]) if ([[tableColumn identifier] isEqualToString:BOXSTRING("left")])
return [tableColumn dataCell]; return [tableColumn dataCell];
setting_data = (const rarch_setting_t *)setting_data_get_list(); setting_data = (const rarch_setting_t *)setting_data_get_list(false);
setting = (const rarch_setting_t *)&setting_data[[item intValue]]; setting = (const rarch_setting_t *)&setting_data[[item intValue]];
switch (setting->type) switch (setting->type)
@ -304,7 +304,7 @@ NSWindowDelegate>
if ([item isKindOfClass:[NSNumber class]]) if ([item isKindOfClass:[NSNumber class]])
{ {
rarch_setting_t *setting_data = (rarch_setting_t*)setting_data_get_list(); rarch_setting_t *setting_data = (rarch_setting_t*)setting_data_get_list(false);
rarch_setting_t *setting = (rarch_setting_t*)&setting_data[[item intValue]]; rarch_setting_t *setting = (rarch_setting_t*)&setting_data[[item intValue]];
switch (setting->type) switch (setting->type)
@ -334,7 +334,7 @@ NSWindowDelegate>
if ([item isKindOfClass:[NSNumber class]]) if ([item isKindOfClass:[NSNumber class]])
{ {
rarch_setting_t *setting_data = (rarch_setting_t *)setting_data_get_list(); rarch_setting_t *setting_data = (rarch_setting_t *)setting_data_get_list(false);
rarch_setting_t *setting = (rarch_setting_t*)&setting_data[[item intValue]]; rarch_setting_t *setting = (rarch_setting_t*)&setting_data[[item intValue]];
NSString *editor_string = (NSString*)editor.string; NSString *editor_string = (NSString*)editor.string;

View File

@ -808,7 +808,7 @@ static void RunActionSheet(const char* title, const struct string_list* items, U
_pathToSave = BOXSTRING(g_defaults.config_path); _pathToSave = BOXSTRING(g_defaults.config_path);
} }
setting_data = (rarch_setting_t*)setting_data_get_list(); setting_data = (rarch_setting_t*)setting_data_get_list(true);
setting_data_load_config_path(setting_data, _pathToSave.UTF8String); setting_data_load_config_path(setting_data, _pathToSave.UTF8String);
// HACK: Load the key mapping table // HACK: Load the key mapping table
@ -858,7 +858,7 @@ static void RunActionSheet(const char* title, const struct string_list* items, U
if (config) if (config)
{ {
setting_data_save_config(setting_data_get_list(), config); setting_data_save_config(setting_data_get_list(false), config);
config_file_write(config, self.pathToSave.UTF8String); config_file_write(config, self.pathToSave.UTF8String);
config_file_free(config); config_file_free(config);
} }

View File

@ -68,7 +68,7 @@ static int menu_info_screen_iterate(unsigned action)
char needle[PATH_MAX]; char needle[PATH_MAX];
unsigned info_type = 0; unsigned info_type = 0;
rarch_setting_t *current_setting = NULL; rarch_setting_t *current_setting = NULL;
rarch_setting_t *setting_data = (rarch_setting_t *)setting_data_get_list(); rarch_setting_t *setting_data = (rarch_setting_t *)setting_data_get_list(false);
file_list_t *list = (file_list_t*)driver.menu->selection_buf; file_list_t *list = (file_list_t*)driver.menu->selection_buf;
if (!driver.menu || !setting_data) if (!driver.menu || !setting_data)
@ -80,7 +80,7 @@ static int menu_info_screen_iterate(unsigned action)
current_setting = (rarch_setting_t*)menu_entries_get_last_setting( current_setting = (rarch_setting_t*)menu_entries_get_last_setting(
list->list[driver.menu->selection_ptr].label, list->list[driver.menu->selection_ptr].label,
driver.menu->selection_ptr, driver.menu->selection_ptr,
setting_data_get_list()); setting_data_get_list(false));
if (current_setting) if (current_setting)
strlcpy(needle, current_setting->name, sizeof(needle)); strlcpy(needle, current_setting->name, sizeof(needle));
@ -768,7 +768,7 @@ static int menu_action_ok(const char *menu_path,
const char *path = NULL; const char *path = NULL;
unsigned type = 0; unsigned type = 0;
rarch_setting_t *setting_data = (rarch_setting_t *) rarch_setting_t *setting_data = (rarch_setting_t *)
setting_data_get_list(); setting_data_get_list(false);
rarch_setting_t *setting = (rarch_setting_t*) rarch_setting_t *setting = (rarch_setting_t*)
setting_data_find_setting(setting_data, menu_label); setting_data_find_setting(setting_data, menu_label);

View File

@ -246,7 +246,7 @@ static void glui_frame(void)
file_list_get_at_offset(driver.menu->selection_buf, i, &path, file_list_get_at_offset(driver.menu->selection_buf, i, &path,
&entry_label, &type); &entry_label, &type);
rarch_setting_t *setting = (rarch_setting_t*)setting_data_find_setting( rarch_setting_t *setting = (rarch_setting_t*)setting_data_find_setting(
setting_data_get_list(), setting_data_get_list(false),
driver.menu->selection_buf->list[i].label); driver.menu->selection_buf->list[i].label);
(void)setting; (void)setting;

View File

@ -801,7 +801,7 @@ static void lakka_context_destroy(void *data)
void lakka_init_settings(void) void lakka_init_settings(void)
{ {
rarch_setting_t *setting_data = (rarch_setting_t*)setting_data_get_list(); rarch_setting_t *setting_data = (rarch_setting_t*)setting_data_get_list(false);
menu_category_t *category = (menu_category_t*)&categories[0]; menu_category_t *category = (menu_category_t*)&categories[0];

View File

@ -356,7 +356,7 @@ static void rgui_render(void)
file_list_get_at_offset(driver.menu->selection_buf, i, &path, file_list_get_at_offset(driver.menu->selection_buf, i, &path,
&entry_label, &type); &entry_label, &type);
rarch_setting_t *setting = (rarch_setting_t*)setting_data_find_setting( rarch_setting_t *setting = (rarch_setting_t*)setting_data_find_setting(
setting_data_get_list(), setting_data_get_list(false),
driver.menu->selection_buf->list[i].label); driver.menu->selection_buf->list[i].label);
(void)setting; (void)setting;

View File

@ -393,7 +393,7 @@ int menu_action_setting_set(unsigned id, const char *label,
rarch_setting_t *setting = (rarch_setting_t*)menu_entries_get_last_setting( rarch_setting_t *setting = (rarch_setting_t*)menu_entries_get_last_setting(
list->list[driver.menu->selection_ptr].label, list->list[driver.menu->selection_ptr].label,
driver.menu->selection_ptr, driver.menu->selection_ptr,
setting_data_get_list() setting_data_get_list(false)
); );
if (setting) if (setting)

View File

@ -167,7 +167,7 @@ int menu_entries_push_list(menu_handle_t *menu,
char tmp[256]; char tmp[256];
size_t list_size = 0; size_t list_size = 0;
rarch_setting_t *setting_data = (rarch_setting_t *) rarch_setting_t *setting_data = (rarch_setting_t *)
setting_data_get_list(); setting_data_get_list(true);
bool do_action = false; bool do_action = false;
#if 0 #if 0
@ -211,7 +211,6 @@ int menu_entries_push_list(menu_handle_t *menu,
!strcmp(label, "Netplay Options") !strcmp(label, "Netplay Options")
) )
{ {
rarch_setting_t *setting_data = (rarch_setting_t*)setting_data_get_list();
rarch_setting_t *setting = (rarch_setting_t*)setting_data_find_setting(setting_data, rarch_setting_t *setting = (rarch_setting_t*)setting_data_find_setting(setting_data,
label); label);
@ -242,7 +241,6 @@ int menu_entries_push_list(menu_handle_t *menu,
} }
else if (!strcmp(label, "settings")) else if (!strcmp(label, "settings"))
{ {
rarch_setting_t *setting_data = (rarch_setting_t*)setting_data_get_list();
rarch_setting_t *setting = (rarch_setting_t*)setting_data_find_setting(setting_data, rarch_setting_t *setting = (rarch_setting_t*)setting_data_find_setting(setting_data,
"Driver Options"); "Driver Options");

View File

@ -72,7 +72,7 @@ void st_uint_callback(void *userdata, const char *str)
{ {
menu_handle_t *menu = (menu_handle_t*)userdata; menu_handle_t *menu = (menu_handle_t*)userdata;
rarch_setting_t *current_setting = NULL; rarch_setting_t *current_setting = NULL;
rarch_setting_t *setting_data = (rarch_setting_t *)setting_data_get_list(); rarch_setting_t *setting_data = (rarch_setting_t *)setting_data_get_list(false);
if (str && *str && setting_data) if (str && *str && setting_data)
{ {
@ -88,7 +88,7 @@ void st_string_callback(void *userdata, const char *str)
{ {
menu_handle_t *menu = (menu_handle_t*)userdata; menu_handle_t *menu = (menu_handle_t*)userdata;
rarch_setting_t *current_setting = NULL; rarch_setting_t *current_setting = NULL;
rarch_setting_t *setting_data = (rarch_setting_t *)setting_data_get_list(); rarch_setting_t *setting_data = (rarch_setting_t *)setting_data_get_list(false);
if (str && *str && setting_data) if (str && *str && setting_data)
{ {

View File

@ -361,7 +361,7 @@ int menu_shader_manager_setting_toggle(
#endif #endif
rarch_setting_t *current_setting = NULL; rarch_setting_t *current_setting = NULL;
rarch_setting_t *setting_data = (rarch_setting_t *)setting_data_get_list(); rarch_setting_t *setting_data = (rarch_setting_t *)setting_data_get_list(false);
if (!strcmp(label, "video_shader_default_filter")) if (!strcmp(label, "video_shader_default_filter"))

View File

@ -1791,7 +1791,7 @@ void setting_data_get_label(char *type_str,
size_t type_str_size, unsigned *w, unsigned type, size_t type_str_size, unsigned *w, unsigned type,
const char *menu_label, const char *label, unsigned index) const char *menu_label, const char *label, unsigned index)
{ {
rarch_setting_t *setting_data = (rarch_setting_t*)setting_data_get_list(); rarch_setting_t *setting_data = (rarch_setting_t*)setting_data_get_list(false);
rarch_setting_t *setting = (rarch_setting_t*)setting_data_find_setting(setting_data, rarch_setting_t *setting = (rarch_setting_t*)setting_data_find_setting(setting_data,
driver.menu->selection_buf->list[index].label); driver.menu->selection_buf->list[index].label);
@ -2331,58 +2331,6 @@ void *rarch_setting_list_new(unsigned size)
return list; return list;
} }
#ifdef HAVE_MENU
rarch_setting_t *setting_data_get_mainmenu(bool regenerate)
{
rarch_setting_info_t *list_info = NULL;
rarch_setting_group_info_t group_info;
rarch_setting_group_info_t subgroup_info;
static rarch_setting_t* list = NULL;
(void)group_info;
(void)subgroup_info;
if (list)
{
if (!regenerate)
return list;
rarch_setting_list_free(list);
}
list_info = (rarch_setting_info_t*)rarch_setting_info_list_new();
if (!list_info)
return NULL;
list = (rarch_setting_t*)rarch_setting_list_new(list_info->size);
if (!list)
goto error;
if (!setting_data_get_list_main_menu_options(&list, list_info))
goto error;
rarch_setting_t terminator = { ST_NONE };
if (!(data_list_append(&list, list_info, terminator)))
goto error;
/* flatten this array to save ourselves some kilobytes */
if (!(list = (rarch_setting_t*)realloc(list, list_info->index * sizeof(rarch_setting_t))))
goto error;
rarch_setting_info_list_free(list_info);
/* do not optimize into return realloc(),
* list is static and must be written. */
return (rarch_setting_t*)list;
error:
RARCH_ERR("Allocation failed.\n");
rarch_setting_info_list_free(list_info);
rarch_setting_list_free(list);
return NULL;
}
#endif
bool setting_data_get_list_driver_options( bool setting_data_get_list_driver_options(
rarch_setting_t **list, rarch_setting_t **list,
@ -2951,14 +2899,68 @@ bool setting_data_get_list_privacy_options(
return true; return true;
} }
#ifdef HAVE_MENU
/* TODO - combine this with setting_data_get_list. */
rarch_setting_t *setting_data_get_list(void) rarch_setting_t *setting_data_get_mainmenu(bool need_refresh)
{ {
rarch_setting_info_t *list_info = NULL; rarch_setting_info_t *list_info = NULL;
static rarch_setting_t* list = NULL; static rarch_setting_t* list = NULL;
if (list) if (list)
return list; {
if (!need_refresh)
return list;
rarch_setting_list_free(list);
}
list_info = (rarch_setting_info_t*)rarch_setting_info_list_new();
if (!list_info)
return NULL;
list = (rarch_setting_t*)rarch_setting_list_new(list_info->size);
if (!list)
goto error;
if (!setting_data_get_list_main_menu_options(&list, list_info))
goto error;
rarch_setting_t terminator = { ST_NONE };
if (!(data_list_append(&list, list_info, terminator)))
goto error;
/* flatten this array to save ourselves some kilobytes */
if (!(list = (rarch_setting_t*)realloc(list, list_info->index * sizeof(rarch_setting_t))))
goto error;
rarch_setting_info_list_free(list_info);
/* do not optimize into return realloc(),
* list is static and must be written. */
return (rarch_setting_t*)list;
error:
RARCH_ERR("Allocation failed.\n");
rarch_setting_info_list_free(list_info);
rarch_setting_list_free(list);
return NULL;
}
#endif
rarch_setting_t *setting_data_get_list(bool need_refresh)
{
rarch_setting_info_t *list_info = NULL;
static rarch_setting_t* list = NULL;
if (list)
{
if (!need_refresh)
return list;
rarch_setting_list_free(list);
}
list_info = (rarch_setting_info_t*)rarch_setting_info_list_new(); list_info = (rarch_setting_info_t*)rarch_setting_info_list_new();
if (!list_info) if (!list_info)

View File

@ -202,7 +202,7 @@ void setting_data_get_label(char *type_str,
size_t type_str_size, unsigned *w, unsigned type, size_t type_str_size, unsigned *w, unsigned type,
const char *menu_label, const char *label, unsigned index); const char *menu_label, const char *label, unsigned index);
#endif #endif
rarch_setting_t* setting_data_get_list(void); rarch_setting_t* setting_data_get_list(bool need_refresh);
#ifdef __cplusplus #ifdef __cplusplus
} }