Go through more menu driver wrapper functions

This commit is contained in:
twinaphex 2015-04-11 05:28:40 +02:00
parent 8b10d0adc2
commit aeb359f5b5
5 changed files with 77 additions and 26 deletions

View File

@ -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

View File

@ -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();

View File

@ -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

View File

@ -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(

View File

@ -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);