diff --git a/frontend/menu/menu_common.c b/frontend/menu/menu_common.c index 6d034322a8..46608c035c 100644 --- a/frontend/menu/menu_common.c +++ b/frontend/menu/menu_common.c @@ -223,6 +223,7 @@ void menu_free(void *data) libretro_free_system_info(&g_extern.menu.info); #endif + //menu_list_free(menu->menu_list); menu_list_destroy(menu->menu_stack); menu_list_destroy(menu->selection_buf); diff --git a/frontend/menu/menu_list.c b/frontend/menu/menu_list.c index 845031ea5a..9d58bff5a3 100644 --- a/frontend/menu/menu_list.c +++ b/frontend/menu/menu_list.c @@ -39,6 +39,15 @@ end: file_list_free(list); } +void menu_list_free(menu_list_t *menu_list) +{ + if (!menu_list) + return; + + menu_list_destroy(menu_list->menu_stack); + menu_list_destroy(menu_list->selection_buf); +} + size_t menu_list_get_stack_size(void) { if (!driver.menu) diff --git a/frontend/menu/menu_list.h b/frontend/menu/menu_list.h index e4e03553f5..f358798225 100644 --- a/frontend/menu/menu_list.h +++ b/frontend/menu/menu_list.h @@ -23,6 +23,14 @@ extern "C" { #endif +typedef struct menu_list +{ + file_list_t *menu_stack; + file_list_t *selection_buf; +} menu_list_t; + +void menu_list_free(menu_list_t *menu_list); + void menu_list_destroy(file_list_t *list); void menu_list_flush_stack(file_list_t *list,