From aeb359f5b5be64abf66e0728bbdc29a91382175d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 11 Apr 2015 05:28:40 +0200 Subject: [PATCH] Go through more menu driver wrapper functions --- driver.c | 15 +++++------ menu/menu_driver.c | 49 ++++++++++++++++++++++++++++++++++ menu/menu_driver.h | 13 +++++++++ menu/menu_entries_cbs_toggle.c | 3 +-- menu/menu_list.c | 23 +++++----------- 5 files changed, 77 insertions(+), 26 deletions(-) diff --git a/driver.c b/driver.c index e8a2c143eb..125a7e43fe 100644 --- a/driver.c +++ b/driver.c @@ -431,15 +431,14 @@ void uninit_drivers(int flags) #ifdef HAVE_MENU if (flags & DRIVER_MENU) { - if (driver->menu_ctx && driver->menu_ctx->context_destroy) - driver->menu_ctx->context_destroy(); + menu_driver_context_destroy(); - if (!driver->menu_data_own) - { - menu_free_list(driver->menu); - menu_free(driver->menu); - driver->menu = NULL; - } + if (!driver->menu_data_own) + { + menu_free_list(driver->menu); + menu_free(driver->menu); + driver->menu = NULL; + } } #endif diff --git a/menu/menu_driver.c b/menu/menu_driver.c index b95d9d63f3..5d963aa346 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -182,6 +182,55 @@ static const menu_ctx_driver_t *menu_ctx_driver_get_ptr(void) return driver->menu_ctx; } +void menu_driver_list_delete(file_list_t *list, size_t i, size_t list_size) +{ + const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); + + if (driver->list_delete) + driver->list_delete(list, i, list_size); +} + +void menu_driver_list_clear(file_list_t *list) +{ + const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); + + if (driver->list_clear) + driver->list_clear(list); +} + +void menu_driver_context_destroy(void) +{ + const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); + + if (driver->context_destroy) + driver->context_destroy(); +} + +void menu_driver_list_set_selection(file_list_t *list) +{ + const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); + + if (driver->list_set_selection) + driver->list_set_selection(list); +} + +void menu_driver_list_insert(file_list_t *list, const char *path, + const char *label, size_t list_size) +{ + const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); + + if (driver->list_insert) + driver->list_insert(list, path, label, list_size); +} + +void menu_driver_list_cache(bool state, unsigned action) +{ + const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); + + if (driver->list_cache) + driver->list_cache(state, action); +} + void menu_driver_navigation_increment(void) { const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); diff --git a/menu/menu_driver.h b/menu/menu_driver.h index 25f0279067..0c67803671 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -336,6 +336,19 @@ void menu_driver_navigation_descend_alphabet(size_t *); void menu_driver_navigation_ascend_alphabet(size_t *); +void menu_driver_list_cache(bool state, unsigned action); + +void menu_driver_list_delete(file_list_t *list, size_t i, size_t list_size); + +void menu_driver_list_insert(file_list_t *list, const char *path, + const char *label, size_t list_size); + +void menu_driver_list_clear(file_list_t *list); + +void menu_driver_list_set_selection(file_list_t *list); + +void menu_driver_context_destroy(void); + #ifdef __cplusplus } #endif diff --git a/menu/menu_entries_cbs_toggle.c b/menu/menu_entries_cbs_toggle.c index bc57170c21..92bc0e369f 100644 --- a/menu/menu_entries_cbs_toggle.c +++ b/menu/menu_entries_cbs_toggle.c @@ -235,8 +235,7 @@ static int action_toggle_mainmenu(unsigned type, const char *label, switch (push_list) { case 1: - if (driver->menu_ctx->list_cache) - driver->menu_ctx->list_cache(true, action); + menu_driver_list_cache(true, action); if (cbs && cbs->action_content_list_switch) return cbs->action_content_list_switch( diff --git a/menu/menu_list.c b/menu/menu_list.c index da1156930e..91e66d244d 100644 --- a/menu/menu_list.c +++ b/menu/menu_list.c @@ -149,8 +149,7 @@ static void menu_list_destroy(file_list_t *list) for (i = 0; i < list->size; i++) { - if (driver->menu_ctx->list_delete) - driver->menu_ctx->list_delete(list, i, list->size); + menu_driver_list_delete(list, i, list->size); menu_common_list_delete(list, i, list->size); } @@ -287,8 +286,7 @@ void menu_list_pop_stack(menu_list_t *list) if (file_list_get_size(list->menu_stack) <= 1) return; - if (driver->menu_ctx->list_cache) - driver->menu_ctx->list_cache(false, 0); + menu_driver_list_cache(false, 0); menu_list_pop(list->menu_stack, &menu->navigation.selection_ptr); menu->need_refresh = true; @@ -325,8 +323,7 @@ void menu_list_pop(file_list_t *list, size_t *directory_ptr) { size_t list_size = list->size - 1; - if (driver->menu_ctx->list_delete) - driver->menu_ctx->list_delete(list, list_size, list_size); + menu_driver_list_delete(list, list_size, list_size); menu_common_list_delete(list, list_size, list_size); } @@ -336,9 +333,7 @@ end: if (!driver->menu_ctx) return; - if (driver->menu_ctx->list_set_selection) - driver->menu_ctx->list_set_selection(list); - + menu_driver_list_set_selection(list); menu_common_list_set_selection(list); } @@ -348,8 +343,7 @@ void menu_list_clear(file_list_t *list) if (!driver->menu_ctx) goto end; - if (driver->menu_ctx->list_clear) - driver->menu_ctx->list_clear(list); + menu_driver_list_clear(list); end: menu_common_list_clear(list); @@ -363,9 +357,7 @@ static void menu_list_insert(file_list_t *list, if (!driver->menu_ctx) return; - if (driver->menu_ctx->list_insert) - driver->menu_ctx->list_insert(list, path, label, list->size - 1); - + menu_driver_list_insert(list, path, label, list->size - 1); menu_common_list_insert(list, path, label, type, list->size - 1); } @@ -410,8 +402,7 @@ int menu_list_push_stack_refresh(menu_list_t *list, const char *path, const char if (!list) return -1; - if (driver->menu_ctx->list_cache) - driver->menu_ctx->list_cache(false, 0); + menu_driver_list_cache(false, 0); menu_list_push_stack(list, path, label, type, directory_ptr); menu_navigation_clear(&menu->navigation, true);