From 087e1354ec00f41323e7bb488d06032dc8146ac2 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 11 Jun 2015 23:02:17 +0200 Subject: [PATCH] Create file_list_set_userdata/file_list_set_actiondata --- libretro-common/file/file_list.c | 19 +++++++++++++++++-- libretro-common/include/file/file_list.h | 4 ++++ menu/drivers/xmb.c | 12 +++--------- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/libretro-common/file/file_list.c b/libretro-common/file/file_list.c index e0509a3de4..a09660f129 100644 --- a/libretro-common/file/file_list.c +++ b/libretro-common/file/file_list.c @@ -182,8 +182,9 @@ void file_list_copy(file_list_t *list, file_list_t *list_old) list_old->list[i].type = list->list[i].type; list_old->list[i].directory_ptr = list->list[i].directory_ptr; list_old->list[i].entry_idx = list->list[i].entry_idx; - list_old->list[i].userdata = list->list[i].userdata; - list_old->list[i].actiondata = list->list[i].actiondata; + + file_list_set_actiondata(list_old, i, list->list[i].actiondata); + file_list_set_userdata (list_old, i, list->list[i].userdata); if (list->list[i].path) list_old->list[i].path = strdup(list->list[i].path); @@ -282,6 +283,20 @@ void *file_list_get_userdata_at_offset(const file_list_t *list, size_t idx) return list->list[idx].userdata; } +void file_list_set_userdata(const file_list_t *list, size_t idx, void *ptr) +{ + if (!list || !ptr) + return; + list->list[idx].userdata = ptr; +} + +void file_list_set_actiondata(const file_list_t *list, size_t idx, void *ptr) +{ + if (!list || !ptr) + return; + list->list[idx].actiondata = ptr; +} + void *file_list_get_actiondata_at_offset(const file_list_t *list, size_t idx) { if (!list) diff --git a/libretro-common/include/file/file_list.h b/libretro-common/include/file/file_list.h index 007b2a151e..5d593dfb55 100644 --- a/libretro-common/include/file/file_list.h +++ b/libretro-common/include/file/file_list.h @@ -97,6 +97,10 @@ void file_list_get_label_at_offset(const file_list_t *list, size_t index, void file_list_set_alt_at_offset(file_list_t *list, size_t index, const char *alt); +void file_list_set_userdata(const file_list_t *list, size_t idx, void *ptr); + +void file_list_set_actiondata(const file_list_t *list, size_t idx, void *ptr); + void file_list_get_alt_at_offset(const file_list_t *list, size_t index, const char **alt); diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index b5d6c84b39..a3cb7fed2d 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -635,13 +635,7 @@ static void xmb_list_open_new(xmb_handle_t *xmb, static xmb_node_t *xmb_node_allocate_userdata(xmb_handle_t *xmb, unsigned i) { - xmb_node_t *node = NULL; - struct item_file *info = (struct item_file*)&xmb->horizontal_list->list[i]; - - if (!info) - return NULL; - - node = (xmb_node_t*)calloc(1, sizeof(xmb_node_t)); + xmb_node_t *node = (xmb_node_t*)calloc(1, sizeof(xmb_node_t)); if (!node) { @@ -658,7 +652,7 @@ static xmb_node_t *xmb_node_allocate_userdata(xmb_handle_t *xmb, unsigned i) node->zoom = xmb->categories.active.zoom; } - info->actiondata = node; + file_list_set_actiondata(xmb->horizontal_list, i, node); return node; } @@ -1920,7 +1914,7 @@ static void xmb_list_insert(file_list_t *list, node->zoom = xmb->item.active.zoom; } - list->list[i].userdata = (xmb_node_t*)node; + file_list_set_userdata(list, i, node); } static void xmb_list_delete(file_list_t *list,