Create menu_displaylist_push_list_process

This commit is contained in:
twinaphex 2015-10-22 01:38:41 +02:00
parent 463df9e526
commit 413aa2489e
8 changed files with 116 additions and 70 deletions

View File

@ -36,59 +36,67 @@
int cb_core_updater_list(void *data_, size_t len);
int cb_core_content_list(void *data_, size_t len);
static int deferred_push_dlist(menu_displaylist_info_t *info, unsigned val)
{
if (menu_displaylist_push_list(info, val) != 0)
return -1;
menu_displaylist_push_list_process(info);
return 0;
}
static int deferred_push_core_information(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_CORE_INFO);
return deferred_push_dlist(info, DISPLAYLIST_CORE_INFO);
}
static int deferred_push_system_information(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_SYSTEM_INFO);
return deferred_push_dlist(info, DISPLAYLIST_SYSTEM_INFO);
}
static int deferred_push_debug_information(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_DEBUG_INFO);
return deferred_push_dlist(info, DISPLAYLIST_DEBUG_INFO);
}
static int deferred_push_rdb_collection(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_PLAYLIST_COLLECTION);
return deferred_push_dlist(info, DISPLAYLIST_PLAYLIST_COLLECTION);
}
static int deferred_push_accounts_list(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_ACCOUNTS_LIST);
return deferred_push_dlist(info, DISPLAYLIST_ACCOUNTS_LIST);
}
static int deferred_push_accounts_cheevos_list(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_ACCOUNTS_CHEEVOS_LIST);
return deferred_push_dlist(info, DISPLAYLIST_ACCOUNTS_CHEEVOS_LIST);
}
static int deferred_push_help(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_HELP_SCREEN_LIST);
return deferred_push_dlist(info, DISPLAYLIST_HELP_SCREEN_LIST);
}
static int deferred_push_rdb_entry_detail(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_DATABASE_ENTRY);
return deferred_push_dlist(info, DISPLAYLIST_DATABASE_ENTRY);
}
static int deferred_push_rpl_entry_actions(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_HORIZONTAL_CONTENT_ACTIONS);
return deferred_push_dlist(info, DISPLAYLIST_HORIZONTAL_CONTENT_ACTIONS);
}
static int deferred_push_core_list_deferred(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_CORES_SUPPORTED);
return deferred_push_dlist(info, DISPLAYLIST_CORES_SUPPORTED);
}
static int deferred_push_core_collection_list_deferred(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_CORES_COLLECTION_SUPPORTED);
return deferred_push_dlist(info, DISPLAYLIST_CORES_COLLECTION_SUPPORTED);
}
static int deferred_push_database_manager_list_deferred(menu_displaylist_info_t *info)
@ -96,7 +104,7 @@ static int deferred_push_database_manager_list_deferred(menu_displaylist_info_t
strlcpy(info->path_b, info->path, sizeof(info->path_b));
info->path_c[0] = '\0';
return menu_displaylist_push_list(info, DISPLAYLIST_DATABASE_QUERY);
return deferred_push_dlist(info, DISPLAYLIST_DATABASE_QUERY);
}
static int deferred_push_cursor_manager_list_deferred(menu_displaylist_info_t *info)
@ -124,7 +132,7 @@ static int deferred_push_cursor_manager_list_deferred(menu_displaylist_info_t *i
strlcpy(info->path, rdb_path, sizeof(info->path));
strlcpy(info->path_c, query, sizeof(info->path_c));
ret = menu_displaylist_push_list(info, DISPLAYLIST_DATABASE_QUERY);
ret = deferred_push_dlist(info, DISPLAYLIST_DATABASE_QUERY);
end:
if (conf)
@ -148,7 +156,7 @@ static int deferred_push_cursor_manager_list_deferred_query_subsearch(menu_displ
strlcpy(info->path_b, str_list->elems[0].data, sizeof(info->path_b));
strlcpy(info->path_c, query, sizeof(info->path_c));
ret = menu_displaylist_push_list(info, DISPLAYLIST_DATABASE_QUERY);
ret = deferred_push_dlist(info, DISPLAYLIST_DATABASE_QUERY);
end:
if (str_list)
@ -159,88 +167,87 @@ end:
static int deferred_push_video_shader_preset_parameters(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_SHADER_PARAMETERS_PRESET);
return deferred_push_dlist(info, DISPLAYLIST_SHADER_PARAMETERS_PRESET);
}
static int deferred_push_video_shader_parameters(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_SHADER_PARAMETERS);
return deferred_push_dlist(info, DISPLAYLIST_SHADER_PARAMETERS);
}
static int deferred_push_settings(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_SETTINGS_ALL);
return deferred_push_dlist(info, DISPLAYLIST_SETTINGS_ALL);
}
static int deferred_push_category(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_SETTINGS);
return deferred_push_dlist(info, DISPLAYLIST_SETTINGS);
}
static int deferred_push_shader_options(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_OPTIONS_SHADERS);
return deferred_push_dlist(info, DISPLAYLIST_OPTIONS_SHADERS);
}
static int deferred_push_options(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_OPTIONS);
return deferred_push_dlist(info, DISPLAYLIST_OPTIONS);
}
static int deferred_push_content_settings(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_CONTENT_SETTINGS);
return deferred_push_dlist(info, DISPLAYLIST_CONTENT_SETTINGS);
}
static int deferred_push_add_content_list(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_ADD_CONTENT_LIST);
return deferred_push_dlist(info, DISPLAYLIST_ADD_CONTENT_LIST);
}
static int deferred_push_load_content_list(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_LOAD_CONTENT_LIST);
return deferred_push_dlist(info, DISPLAYLIST_LOAD_CONTENT_LIST);
}
static int deferred_push_information_list(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_INFORMATION_LIST);
return deferred_push_dlist(info, DISPLAYLIST_INFORMATION_LIST);
}
static int deferred_push_management_options(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_OPTIONS_MANAGEMENT);
return deferred_push_dlist(info, DISPLAYLIST_OPTIONS_MANAGEMENT);
}
static int deferred_push_core_counters(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_PERFCOUNTERS_CORE);
return deferred_push_dlist(info, DISPLAYLIST_PERFCOUNTERS_CORE);
}
static int deferred_push_frontend_counters(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_PERFCOUNTERS_FRONTEND);
return deferred_push_dlist(info, DISPLAYLIST_PERFCOUNTERS_FRONTEND);
}
static int deferred_push_core_cheat_options(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_OPTIONS_CHEATS);
return deferred_push_dlist(info, DISPLAYLIST_OPTIONS_CHEATS);
}
static int deferred_push_core_input_remapping_options(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_OPTIONS_REMAPPINGS);
return deferred_push_dlist(info, DISPLAYLIST_OPTIONS_REMAPPINGS);
}
static int deferred_push_core_options(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_CORE_OPTIONS);
return deferred_push_dlist(info, DISPLAYLIST_CORE_OPTIONS);
}
static int deferred_push_disk_options(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_OPTIONS_DISK);
return deferred_push_dlist(info, DISPLAYLIST_OPTIONS_DISK);
}
#ifdef HAVE_NETWORKING
@ -289,23 +296,23 @@ int cb_core_content_list(void *data_, size_t len)
static int deferred_push_core_updater_list(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_CORES_UPDATER);
return deferred_push_dlist(info, DISPLAYLIST_CORES_UPDATER);
}
static int deferred_push_core_content_list(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_CORE_CONTENT);
return deferred_push_dlist(info, DISPLAYLIST_CORE_CONTENT);
}
#endif
static int deferred_archive_action_detect_core(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_ARCHIVE_ACTION_DETECT_CORE);
return deferred_push_dlist(info, DISPLAYLIST_ARCHIVE_ACTION_DETECT_CORE);
}
static int deferred_archive_action(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_ARCHIVE_ACTION);
return deferred_push_dlist(info, DISPLAYLIST_ARCHIVE_ACTION);
}
enum
@ -413,7 +420,7 @@ static int general_push(menu_displaylist_info_t *info, unsigned id, unsigned typ
#endif
}
return menu_displaylist_push_list(info, type);
return deferred_push_dlist(info, type);
}
static int deferred_push_detect_core_list(menu_displaylist_info_t *info)
@ -438,7 +445,7 @@ static int deferred_push_default(menu_displaylist_info_t *info)
static int deferred_push_history_list(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_HISTORY);
return deferred_push_dlist(info, DISPLAYLIST_HISTORY);
}
int deferred_push_content_list(void *data, void *userdata, const char *path,
@ -450,87 +457,87 @@ int deferred_push_content_list(void *data, void *userdata, const char *path,
static int deferred_push_database_manager_list(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_DATABASES);
return deferred_push_dlist(info, DISPLAYLIST_DATABASES);
}
static int deferred_push_cursor_manager_list(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_DATABASE_CURSORS);
return deferred_push_dlist(info, DISPLAYLIST_DATABASE_CURSORS);
}
static int deferred_push_content_collection_list(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_DATABASE_PLAYLISTS);
return deferred_push_dlist(info, DISPLAYLIST_DATABASE_PLAYLISTS);
}
static int deferred_push_core_list(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_CORES);
return deferred_push_dlist(info, DISPLAYLIST_CORES);
}
static int deferred_push_configurations(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_CONFIG_FILES);
return deferred_push_dlist(info, DISPLAYLIST_CONFIG_FILES);
}
static int deferred_push_video_shader_preset(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_SHADER_PRESET);
return deferred_push_dlist(info, DISPLAYLIST_SHADER_PRESET);
}
static int deferred_push_video_shader_pass(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_SHADER_PASS);
return deferred_push_dlist(info, DISPLAYLIST_SHADER_PASS);
}
static int deferred_push_video_filter(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_VIDEO_FILTERS);
return deferred_push_dlist(info, DISPLAYLIST_VIDEO_FILTERS);
}
static int deferred_push_images(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_IMAGES);
return deferred_push_dlist(info, DISPLAYLIST_IMAGES);
}
static int deferred_push_audio_dsp_plugin(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_AUDIO_FILTERS);
return deferred_push_dlist(info, DISPLAYLIST_AUDIO_FILTERS);
}
static int deferred_push_cheat_file_load(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_CHEAT_FILES);
return deferred_push_dlist(info, DISPLAYLIST_CHEAT_FILES);
}
static int deferred_push_remap_file_load(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_REMAP_FILES);
return deferred_push_dlist(info, DISPLAYLIST_REMAP_FILES);
}
static int deferred_push_record_configfile(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_RECORD_CONFIG_FILES);
return deferred_push_dlist(info, DISPLAYLIST_RECORD_CONFIG_FILES);
}
static int deferred_push_input_overlay(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_OVERLAYS);
return deferred_push_dlist(info, DISPLAYLIST_OVERLAYS);
}
static int deferred_push_input_osk_overlay(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_OVERLAYS);
return deferred_push_dlist(info, DISPLAYLIST_OVERLAYS);
}
static int deferred_push_video_font_path(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_FONTS);
return deferred_push_dlist(info, DISPLAYLIST_FONTS);
}
static int deferred_push_content_history_path(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_CONTENT_HISTORY);
return deferred_push_dlist(info, DISPLAYLIST_CONTENT_HISTORY);
}
static int menu_cbs_init_bind_deferred_push_compare_label(menu_file_list_cbs_t *cbs,

View File

@ -27,6 +27,7 @@
static int action_info_default(unsigned type, const char *label)
{
int ret;
size_t selection = 0;
menu_displaylist_info_t info = {0};
file_list_t *menu_stack = menu_entries_get_menu_stack_ptr();
@ -40,7 +41,11 @@ static int action_info_default(unsigned type, const char *label)
menu_hash_to_str(MENU_LABEL_INFO_SCREEN),
sizeof(info.label));
return menu_displaylist_push_list(&info, DISPLAYLIST_HELP);
ret = menu_displaylist_push_list(&info, DISPLAYLIST_HELP);
if (ret != 0)
return ret;
menu_displaylist_push_list_process(&info);
return 0;
}
int menu_cbs_init_bind_info(menu_file_list_cbs_t *cbs,

View File

@ -46,6 +46,7 @@ int generic_action_ok_displaylist_push(const char *path,
const char *label, unsigned type, size_t idx, size_t entry_idx,
unsigned action_type)
{
int ret;
char tmp[PATH_MAX_LENGTH];
char action_path[PATH_MAX_LENGTH];
unsigned dl_type = DISPLAYLIST_GENERIC;
@ -307,7 +308,12 @@ int generic_action_ok_displaylist_push(const char *path,
if (info_path)
strlcpy(info.path, info_path, sizeof(info.path));
return menu_displaylist_push_list(&info, dl_type);
ret = menu_displaylist_push_list(&info, dl_type);
if (ret != 0)
return -1;
menu_displaylist_push_list_process(&info);
return 0;
}
int action_ok_push_quick_menu(void)

View File

@ -1717,7 +1717,8 @@ static void xmb_init_horizontal_list(menu_handle_t *menu, xmb_handle_t *xmb)
strlcpy(info.path, settings->playlist_directory, sizeof(info.path));
strlcpy(info.exts, "lpl", sizeof(info.exts));
menu_displaylist_push_list(&info, DISPLAYLIST_DATABASE_PLAYLISTS_HORIZONTAL);
if (menu_displaylist_push_list(&info, DISPLAYLIST_DATABASE_PLAYLISTS_HORIZONTAL) == 0)
menu_displaylist_push_list_process(&info);
}
static void xmb_font(menu_handle_t *menu)
@ -2556,7 +2557,11 @@ static void xmb_toggle(bool menu_on)
static int deferred_push_content_actions(menu_displaylist_info_t *info)
{
return menu_displaylist_push_list(info, DISPLAYLIST_HORIZONTAL_CONTENT_ACTIONS);
int ret = menu_displaylist_push_list(info, DISPLAYLIST_HORIZONTAL_CONTENT_ACTIONS);
if (ret != 0)
return ret;
menu_displaylist_push_list_process(info);
return 0;
}
static int xmb_list_bind_init_compare_label(menu_file_list_cbs_t *cbs,

View File

@ -2532,7 +2532,8 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type)
case DISPLAYLIST_PLAYLIST_COLLECTION:
if (!strcmp(info->path, "content_history.lpl"))
{
menu_displaylist_push_list(info, DISPLAYLIST_HISTORY);
if (menu_displaylist_push_list(info, DISPLAYLIST_HISTORY) == 0)
menu_displaylist_push_list_process(info);
return 0;
}
else
@ -2791,9 +2792,18 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type)
break;
}
return ret;
}
void menu_displaylist_push_list_process(menu_displaylist_info_t *info)
{
if (!info)
return;
if (info->need_sort)
file_list_sort_on_alt(info->list);
if (info->need_refresh)
menu_entries_refresh(info->list);
@ -2810,8 +2820,6 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type)
ui->notify_list_loaded(driver->ui_companion_data,
info->list, info->menu_list);
}
return ret;
}
int menu_displaylist_push(file_list_t *list, file_list_t *menu_list)
@ -2839,11 +2847,20 @@ int menu_displaylist_push(file_list_t *list, file_list_t *menu_list)
switch (hash_label)
{
case MENU_VALUE_MAIN_MENU:
return menu_displaylist_push_list(&info, DISPLAYLIST_MAIN_MENU);
if (menu_displaylist_push_list(&info, DISPLAYLIST_MAIN_MENU) != 0)
return -1;
menu_displaylist_push_list_process(&info);
return 0;
case MENU_VALUE_SETTINGS_TAB:
return menu_displaylist_push_list(&info, DISPLAYLIST_SETTINGS_ALL);
if (menu_displaylist_push_list(&info, DISPLAYLIST_SETTINGS_ALL) != 0)
return -1;
menu_displaylist_push_list_process(&info);
return 0;
case MENU_VALUE_HORIZONTAL_MENU:
return menu_displaylist_push_list(&info, DISPLAYLIST_HORIZONTAL);
if (menu_displaylist_push_list(&info, DISPLAYLIST_HORIZONTAL) != 0)
return -1;
menu_displaylist_push_list_process(&info);
return 0;
}
cbs = menu_entries_get_last_stack_actiondata();

View File

@ -116,6 +116,8 @@ typedef struct menu_displaylist_info
int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type);
void menu_displaylist_push_list_process(menu_displaylist_info_t *info);
int menu_displaylist_push(file_list_t *list, file_list_t *menu_list);
int menu_displaylist_parse_settings(void *data, menu_displaylist_info_t *info,

View File

@ -628,7 +628,8 @@ static int menu_input_key_bind_set_mode_common(rarch_setting_t *setting,
strlcpy(info.label,
menu_hash_to_str(MENU_LABEL_CUSTOM_BIND), sizeof(info.label));
menu_displaylist_push_list(&info, DISPLAYLIST_INFO);
if (menu_displaylist_push_list(&info, DISPLAYLIST_INFO) == 0)
menu_displaylist_push_list_process(&info);
break;
case MENU_INPUT_BIND_ALL:
menu_input->binds.target = &settings->input.binds
@ -643,7 +644,8 @@ static int menu_input_key_bind_set_mode_common(rarch_setting_t *setting,
menu_hash_to_str(MENU_LABEL_CUSTOM_BIND_ALL),
sizeof(info.label));
menu_displaylist_push_list(&info, DISPLAYLIST_INFO);
if (menu_displaylist_push_list(&info, DISPLAYLIST_INFO) == 0)
menu_displaylist_push_list_process(&info);
break;
}

View File

@ -344,7 +344,8 @@ int menu_action_handle_setting(rarch_setting_t *setting,
strlcpy(info.path, setting->default_value.string, sizeof(info.path));
strlcpy(info.label, name, sizeof(info.label));
menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC);
if (menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC) == 0)
menu_displaylist_push_list_process(&info);
}
/* fall-through. */
case ST_BOOL:
@ -2556,7 +2557,8 @@ static void general_write_handler(void *data)
strlcpy(info.label,
menu_hash_to_str(MENU_LABEL_HELP), sizeof(info.label));
menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC);
if (menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC) == 0)
menu_displaylist_push_list_process(&info);
menu_setting_set_with_string_representation(setting, "false");
}
break;