From d6538bb7ae02ee5c504ceaa0cbf4cc268cb0149a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 10 Dec 2015 19:08:28 +0100 Subject: [PATCH] Pass userdata pointer to list_insert callback --- menu/drivers/rmenu_xui.cpp | 3 ++- menu/drivers/xmb.c | 13 ++++--------- menu/menu_driver.c | 9 +++++++++ menu/menu_driver.h | 6 +++++- menu/menu_entries.c | 3 +-- 5 files changed, 21 insertions(+), 13 deletions(-) diff --git a/menu/drivers/rmenu_xui.cpp b/menu/drivers/rmenu_xui.cpp index 584d4141b7..5bc892d460 100644 --- a/menu/drivers/rmenu_xui.cpp +++ b/menu/drivers/rmenu_xui.cpp @@ -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}; diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index 94a0298d54..01bee67c6a 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -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) diff --git a/menu/menu_driver.c b/menu/menu_driver.c index 7ffae085a6..1975ea70e5 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -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) { diff --git a/menu/menu_driver.h b/menu/menu_driver.h index b2a6a20a24..af6d4f34b2 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -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 */ diff --git a/menu/menu_entries.c b/menu/menu_entries.c index ecb77cc3b2..788fbd7669 100644 --- a/menu/menu_entries.c +++ b/menu/menu_entries.c @@ -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*)