Pass userdata pointer to list_insert callback

This commit is contained in:
twinaphex 2015-12-10 19:08:28 +01:00
parent b42149c826
commit d6538bb7ae
5 changed files with 21 additions and 13 deletions

View File

@ -639,7 +639,8 @@ static void rmenu_xui_navigation_alphabet(size_t *ptr_out)
XuiListSetCurSelVisible(m_menulist, *ptr_out);
}
static void rmenu_xui_list_insert(file_list_t *list,
static void rmenu_xui_list_insert(void *data,
file_list_t *list,
const char *path, const char *, size_t list_size)
{
wchar_t buf[PATH_MAX_LENGTH] = {0};

View File

@ -2253,26 +2253,21 @@ static void xmb_navigation_alphabet(size_t *unused)
xmb_selection_pointer_changed(xmb, true);
}
static void xmb_list_insert(file_list_t *list,
static void xmb_list_insert(void *userdata,
file_list_t *list,
const char *path, const char *unused, size_t list_size)
{
size_t selection;
int current = 0;
int i = list_size;
xmb_node_t *node = NULL;
xmb_handle_t *xmb = NULL;
menu_handle_t *menu = menu_driver_get_ptr();
xmb_handle_t *xmb = (xmb_handle_t*)userdata;
if (!menu)
if (!xmb || !list)
return;
if (!menu_navigation_ctl(MENU_NAVIGATION_CTL_GET_SELECTION, &selection))
return;
xmb = (xmb_handle_t*)menu->userdata;
if (!list || !xmb)
return;
node = (xmb_node_t*)menu_entries_get_userdata_at_offset(list, i);
if (!node)

View File

@ -154,6 +154,15 @@ void init_menu(void)
retro_fail(1, "init_menu()");
}
void menu_driver_list_insert(file_list_t *list, const char *path,
const char *label, size_t idx)
{
const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr();
if (driver->list_insert)
driver->list_insert(menu_driver_data ? menu_driver_data->userdata : NULL,
list, path, label, idx);
}
void menu_driver_list_free(file_list_t *list, size_t idx, size_t list_size)
{

View File

@ -269,7 +269,8 @@ typedef struct menu_ctx_driver
void (*navigation_descend_alphabet)(size_t *);
void (*navigation_ascend_alphabet)(size_t *);
bool (*lists_init)(void*);
void (*list_insert)(file_list_t *list, const char *, const char *, size_t);
void (*list_insert)(void *userdata,
file_list_t *list, const char *, const char *, size_t);
void (*list_free)(file_list_t *list, size_t, size_t);
void (*list_clear)(file_list_t *list);
void (*list_cache)(void *data, menu_list_type_t, unsigned);
@ -370,6 +371,9 @@ int menu_driver_pointer_tap(unsigned x, unsigned y, unsigned ptr,
menu_file_list_cbs_t *cbs,
menu_entry_t *entry, unsigned action);
void menu_driver_list_insert(file_list_t *list, const char *path,
const char *label, size_t idx);
void menu_driver_navigation_clear(bool pending_push);
/* HACK */

View File

@ -587,8 +587,7 @@ void menu_entries_push(file_list_t *list, const char *path, const char *label,
idx = list->size - 1;
if (driver->list_insert)
driver->list_insert(list, path, label, idx);
menu_driver_list_insert(list, path, label, idx);
file_list_free_actiondata(list, idx);
cbs = (menu_file_list_cbs_t*)