Create DISPLAYLIST_PROCESS

This commit is contained in:
twinaphex 2016-02-24 23:19:53 +01:00
parent e8eaa54218
commit 77c583ae47
10 changed files with 56 additions and 49 deletions

View File

@ -49,7 +49,7 @@ static int deferred_push_dlist(menu_displaylist_info_t *info, unsigned val)
{
if (!menu_displaylist_ctl(val, info))
return menu_cbs_exit();
menu_displaylist_push_list_process(info);
menu_displaylist_ctl(DISPLAYLIST_PROCESS, info);
return 0;
}

View File

@ -41,13 +41,13 @@ static int action_info_default(unsigned type, const char *label)
menu_hash_to_str(MENU_LABEL_INFO_SCREEN),
sizeof(info.label));
if (menu_displaylist_ctl(DISPLAYLIST_HELP, &info))
{
menu_displaylist_push_list_process(&info);
return 0;
}
if (!menu_displaylist_ctl(DISPLAYLIST_HELP, &info))
return -1;
return -1;
if (!menu_displaylist_ctl(DISPLAYLIST_PROCESS, &info))
return -1;
return 0;
}
int menu_cbs_init_bind_info(menu_file_list_cbs_t *cbs,

View File

@ -431,11 +431,11 @@ int generic_action_ok_displaylist_push(const char *path,
if (info_path)
strlcpy(info.path, info_path, sizeof(info.path));
if (!menu_displaylist_ctl(dl_type, &info))
return menu_cbs_exit();
if (menu_displaylist_ctl(dl_type, &info))
if (menu_displaylist_ctl(DISPLAYLIST_PROCESS, &info))
return 0;
menu_displaylist_push_list_process(&info);
return 0;
return menu_cbs_exit();
}
static int file_load_with_detect_core_wrapper(size_t idx, size_t entry_idx,

View File

@ -399,7 +399,7 @@ bool generic_menu_init_list(void *data)
info.list = selection_buf;
if (menu_displaylist_ctl(DISPLAYLIST_MAIN_MENU, &info))
menu_displaylist_push_list_process(&info);
menu_displaylist_ctl(DISPLAYLIST_PROCESS, &info);
return true;
}

View File

@ -1080,7 +1080,7 @@ static void xmb_init_horizontal_list(xmb_handle_t *xmb)
strlcpy(info.exts, "lpl", sizeof(info.exts));
if (menu_displaylist_ctl(DISPLAYLIST_DATABASE_PLAYLISTS_HORIZONTAL, &info))
menu_displaylist_push_list_process(&info);
menu_displaylist_ctl(DISPLAYLIST_PROCESS, &info);
}
static void xmb_toggle_horizontal_list(xmb_handle_t *xmb)
@ -2691,7 +2691,7 @@ static int deferred_push_content_actions(menu_displaylist_info_t *info)
if (!menu_displaylist_ctl(
DISPLAYLIST_HORIZONTAL_CONTENT_ACTIONS, info))
return -1;
menu_displaylist_push_list_process(info);
menu_displaylist_ctl(DISPLAYLIST_PROCESS, info);
return 0;
}
@ -2801,11 +2801,14 @@ static bool xmb_menu_init_list(void *data)
info.label, info.type, info.flags, 0);
info.list = selection_buf;
menu_displaylist_ctl(DISPLAYLIST_MAIN_MENU, &info);
if (!menu_displaylist_ctl(DISPLAYLIST_MAIN_MENU, &info))
return false;
info.need_push = true;
menu_displaylist_push_list_process(&info);
if (!menu_displaylist_ctl(DISPLAYLIST_PROCESS, &info))
return false;
return true;
}

View File

@ -1330,15 +1330,14 @@ static bool zarch_menu_init_list(void *data)
event_cmd_ctl(EVENT_CMD_HISTORY_INIT, NULL);
info.list = selection_buf;
menu_displaylist_ctl(DISPLAYLIST_HISTORY, &info);
info.need_push = true;
if (menu_displaylist_ctl(DISPLAYLIST_HISTORY, &info))
{
info.need_push = true;
return menu_displaylist_ctl(DISPLAYLIST_PROCESS, &info);
}
(void)ret;
menu_displaylist_push_list_process(&info);
return true;
return false;
}
menu_ctx_driver_t menu_ctx_zarch = {

View File

@ -2571,6 +2571,26 @@ static void menu_displaylist_parse_playlist_associations(menu_displaylist_info_t
string_list_free(stcores);
}
static bool menu_displaylist_push_list_process(menu_displaylist_info_t *info)
{
if (!info)
return false;
if (info->need_sort)
file_list_sort_on_alt(info->list);
if (info->need_refresh)
menu_entries_ctl(MENU_ENTRIES_CTL_REFRESH, info->list);
if (info->need_push)
{
menu_driver_ctl(RARCH_MENU_CTL_POPULATE_ENTRIES, info);
ui_companion_driver_notify_list_loaded(info->list, info->menu_list);
}
return true;
}
bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist_info_t *info)
{
size_t i;
@ -2583,6 +2603,9 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist
core_info_list_t *list = NULL;
menu_handle_t *menu = NULL;
settings_t *settings = NULL;
if (type == DISPLAYLIST_PROCESS)
return menu_displaylist_push_list_process(info);
if (!menu_driver_ctl(RARCH_MENU_CTL_DRIVER_DATA_GET, &menu))
return false;
@ -3111,8 +3134,8 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist
if (string_is_equal(info->path, "content_history.lpl"))
{
if (menu_displaylist_ctl(DISPLAYLIST_HISTORY, info))
menu_displaylist_push_list_process(info);
return true;
return menu_displaylist_push_list_process(info);
return false;
}
else
{
@ -3432,23 +3455,6 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist
return true;
}
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_ctl(MENU_ENTRIES_CTL_REFRESH, info->list);
if (info->need_push)
{
menu_driver_ctl(RARCH_MENU_CTL_POPULATE_ENTRIES, info);
ui_companion_driver_notify_list_loaded(info->list, info->menu_list);
}
}
int menu_displaylist_push(file_list_t *list, file_list_t *menu_list)

View File

@ -114,7 +114,8 @@ enum menu_displaylist_ctl_state
DISPLAYLIST_SCAN_DIRECTORY_LIST,
DISPLAYLIST_ARCHIVE_ACTION,
DISPLAYLIST_ARCHIVE_ACTION_DETECT_CORE,
DISPLAYLIST_CORE_CONTENT
DISPLAYLIST_CORE_CONTENT,
DISPLAYLIST_PROCESS
};
typedef struct menu_displaylist_info
@ -138,8 +139,6 @@ typedef struct menu_displaylist_info
bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist_info_t *info);
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

@ -664,7 +664,7 @@ static int menu_input_key_bind_set_mode_common(
menu_hash_to_str(MENU_LABEL_CUSTOM_BIND), sizeof(info.label));
if (menu_displaylist_ctl(DISPLAYLIST_INFO, &info))
menu_displaylist_push_list_process(&info);
menu_displaylist_ctl(DISPLAYLIST_PROCESS, &info);
break;
case MENU_INPUT_BIND_ALL:
menu_input->binds.target = &settings->input.binds
@ -680,7 +680,7 @@ static int menu_input_key_bind_set_mode_common(
sizeof(info.label));
if (menu_displaylist_ctl(DISPLAYLIST_INFO, &info))
menu_displaylist_push_list_process(&info);
menu_displaylist_ctl(DISPLAYLIST_PROCESS, &info);
break;
}

View File

@ -1785,7 +1785,7 @@ int menu_action_handle_setting(rarch_setting_t *setting,
strlcpy(info.label, name, sizeof(info.label));
if (menu_displaylist_ctl(DISPLAYLIST_GENERIC, &info))
menu_displaylist_push_list_process(&info);
menu_displaylist_ctl(DISPLAYLIST_PROCESS, &info);
}
/* fall-through. */
case ST_BOOL:
@ -2878,7 +2878,7 @@ void general_write_handler(void *data)
menu_hash_to_str(MENU_LABEL_HELP), sizeof(info.label));
if (menu_displaylist_ctl(DISPLAYLIST_GENERIC, &info))
menu_displaylist_push_list_process(&info);
menu_displaylist_ctl(DISPLAYLIST_PROCESS, &info);
menu_setting_set_with_string_representation(setting, "false");
}
break;