diff --git a/driver.h b/driver.h index 5679e175b1..124de82d58 100644 --- a/driver.h +++ b/driver.h @@ -31,6 +31,7 @@ #include "audio/dsp_filter.h" #include "input/overlay.h" #include "frontend/frontend_context.h" +#include "frontend/menu/file_list.h" #ifndef _WIN32 #include "miscellaneous.h" #endif @@ -503,8 +504,8 @@ typedef struct size_t frame_buf_pitch; bool frame_buf_show; - void *menu_stack; - void *selection_buf; + file_list_t *menu_stack; + file_list_t *selection_buf; size_t selection_ptr; unsigned info_selection; bool need_refresh; diff --git a/frontend/menu/file_list.c b/frontend/menu/file_list.c index 012b496a98..a911e5868e 100644 --- a/frontend/menu/file_list.c +++ b/frontend/menu/file_list.c @@ -29,10 +29,9 @@ struct item_file size_t directory_ptr; }; -void file_list_push(void *data, +void file_list_push(file_list_t *list, const char *path, unsigned type, size_t directory_ptr) { - file_list_t *list = (file_list_t*)data; if (!list) return; @@ -54,19 +53,17 @@ void file_list_push(void *data, } -size_t file_list_get_size(const void *data) +size_t file_list_get_size(const file_list_t *list) { - const file_list_t *list = (const file_list_t*)data; if (!list) return 0; return list->size; } -size_t file_list_get_directory_ptr(const void *data) +size_t file_list_get_directory_ptr(const file_list_t *list) { size_t size; - const file_list_t *list = (const file_list_t*)data; if (!list) return 0; @@ -74,9 +71,8 @@ size_t file_list_get_directory_ptr(const void *data) return list->list[size].directory_ptr; } -void file_list_pop(void *data, size_t *directory_ptr) +void file_list_pop(file_list_t *list, size_t *directory_ptr) { - file_list_t *list = (file_list_t*)data; if (!list) return; @@ -88,18 +84,15 @@ void file_list_pop(void *data, size_t *directory_ptr) } if (directory_ptr) - { *directory_ptr = list->list[list->size].directory_ptr; - } if (driver.menu_ctx && driver.menu_ctx->list_set_selection) driver.menu_ctx->list_set_selection(list); } -void file_list_free(void *data) +void file_list_free(file_list_t *list) { size_t i; - file_list_t *list = (file_list_t*)data; if (!list) return; @@ -110,10 +103,9 @@ void file_list_free(void *data) free(list); } -void file_list_clear(void *data) +void file_list_clear(file_list_t *list) { size_t i; - file_list_t *list = (file_list_t*)data; if (!list) return; @@ -129,10 +121,9 @@ void file_list_clear(void *data) list->size = 0; } -void file_list_set_alt_at_offset(void *data, size_t index, +void file_list_set_alt_at_offset(file_list_t *list, size_t index, const char *alt) { - file_list_t *list = (file_list_t*)data; if (!list) return; @@ -140,10 +131,9 @@ void file_list_set_alt_at_offset(void *data, size_t index, list->list[index].alt = strdup(alt); } -void file_list_get_alt_at_offset(const void *data, size_t index, +void file_list_get_alt_at_offset(const file_list_t *list, size_t index, const char **alt) { - const file_list_t *list = (const file_list_t*)data; if (!list) return; @@ -160,19 +150,17 @@ static int file_list_alt_cmp(const void *a_, const void *b_) return strcasecmp(cmp_a, cmp_b); } -void file_list_sort_on_alt(void *data) +void file_list_sort_on_alt(file_list_t *list) { - file_list_t *list = (file_list_t*)data; if (!list) return; qsort(list->list, list->size, sizeof(list->list[0]), file_list_alt_cmp); } -void file_list_get_at_offset(const void *data, size_t index, +void file_list_get_at_offset(const file_list_t *list, size_t index, const char **path, unsigned *file_type) { - const file_list_t *list = (const file_list_t*)data; if (!list) return; if (!list->list) @@ -184,10 +172,9 @@ void file_list_get_at_offset(const void *data, size_t index, *file_type = list->list[index].type; } -void file_list_get_last(const void *data, +void file_list_get_last(const file_list_t *list, const char **path, unsigned *file_type) { - const file_list_t *list = (const file_list_t*)data; if (!list) return; @@ -195,12 +182,11 @@ void file_list_get_last(const void *data, file_list_get_at_offset(list, list->size - 1, path, file_type); } -bool file_list_search(const void *data, const char *needle, size_t *index) +bool file_list_search(const file_list_t *list, const char *needle, size_t *index) { size_t i; const char *alt; bool ret = false; - const file_list_t *list = (const file_list_t*)data; if (!list) return false; diff --git a/frontend/menu/file_list.h b/frontend/menu/file_list.h index 8105eaf48b..5a7205eb3d 100644 --- a/frontend/menu/file_list.h +++ b/frontend/menu/file_list.h @@ -32,30 +32,30 @@ typedef struct file_list size_t size; } file_list_t; -void file_list_free(void *list); +void file_list_free(file_list_t *list); -void file_list_push(void *userdata, const char *path, +void file_list_push(file_list_t *userdata, const char *path, unsigned type, size_t current_directory_ptr); -void file_list_pop(void *list, size_t *directory_ptr); -void file_list_clear(void *list); +void file_list_pop(file_list_t *list, size_t *directory_ptr); +void file_list_clear(file_list_t *list); -void file_list_get_last(const void *list, +void file_list_get_last(const file_list_t *list, const char **path, unsigned *type); -size_t file_list_get_size(const void *list); -size_t file_list_get_directory_ptr(const void *list); +size_t file_list_get_size(const file_list_t *list); +size_t file_list_get_directory_ptr(const file_list_t *list); -void file_list_get_at_offset(const void *list, size_t index, +void file_list_get_at_offset(const file_list_t *list, size_t index, const char **path, unsigned *type); -void file_list_set_alt_at_offset(void *list, size_t index, +void file_list_set_alt_at_offset(file_list_t *list, size_t index, const char *alt); -void file_list_get_alt_at_offset(const void *list, size_t index, +void file_list_get_alt_at_offset(const file_list_t *list, size_t index, const char **alt); -void file_list_sort_on_alt(void *list); +void file_list_sort_on_alt(file_list_t *list); -bool file_list_search(const void *list, const char *needle, size_t *index); +bool file_list_search(const file_list_t *list, const char *needle, size_t *index); #ifdef __cplusplus }