(Menu) Add logging to menu_entries_cbs

This commit is contained in:
twinaphex 2015-06-07 18:36:10 +02:00
parent b42356ab1c
commit afa9b67f12
18 changed files with 191 additions and 88 deletions

View File

@ -186,11 +186,33 @@ int menu_entries_common_is_settings_entry(const char *label)
return 1;
}
#if 0
#define DEBUG_LOG
#endif
static void menu_entries_cbs_init_log(int ret,
const char *bind_label, const char *label, const char *elem0, const char *elem1,
unsigned type)
{
switch (ret)
{
case 0:
break;
default:
#ifdef DEBUG_LOG
RARCH_WARN("Could not find %s bind (label: [%s], elem0: [%s], elem1: [%s], type: [%d]).\n",
bind_label, label, elem0, elem1, type);
#endif
break;
}
}
void menu_entries_cbs_init(void *data,
const char *path, const char *label,
unsigned type, size_t idx)
{
char elem0[PATH_MAX_LENGTH], elem1[PATH_MAX_LENGTH];
int ret = 0;
struct string_list *str_list = NULL;
const char *menu_label = NULL;
menu_file_list_cbs_t *cbs = NULL;
@ -228,20 +250,67 @@ void menu_entries_cbs_init(void *data,
label_hash = djb2_calculate(label);
menu_label_hash = djb2_calculate(menu_label);
menu_entries_cbs_init_bind_ok(cbs, path, label, type, idx, elem0, elem1, menu_label, label_hash, menu_label_hash);
menu_entries_cbs_init_bind_cancel(cbs, path, label, type, idx, elem0, elem1, label_hash, menu_label_hash);
menu_entries_cbs_init_bind_scan(cbs, path, label, type, idx, elem0, elem1, label_hash, menu_label_hash);
menu_entries_cbs_init_bind_start(cbs, path, label, type, idx, elem0, elem1, label_hash, menu_label_hash);
menu_entries_cbs_init_bind_select(cbs, path, label, type, idx, elem0, elem1, label_hash, menu_label_hash);
menu_entries_cbs_init_bind_info(cbs, path, label, type, idx, elem0, elem1, label_hash, menu_label_hash);
menu_entries_cbs_init_bind_content_list_switch(cbs, path, label, type, idx, elem0, elem1, label_hash, menu_label_hash);
menu_entries_cbs_init_bind_up(cbs, path, label, type, idx, elem0, elem1, label_hash, menu_label_hash);
menu_entries_cbs_init_bind_down(cbs, path, label, type, idx, elem0, elem1, label_hash, menu_label_hash);
menu_entries_cbs_init_bind_left(cbs, path, label, type, idx, elem0, elem1, menu_label, label_hash, menu_label_hash);
menu_entries_cbs_init_bind_right(cbs, path, label, type, idx, elem0, elem1, menu_label, label_hash, menu_label_hash);
menu_entries_cbs_init_bind_deferred_push(cbs, path, label, type, idx, elem0, elem1, label_hash, menu_label_hash);
menu_entries_cbs_init_bind_refresh(cbs, path, label, type, idx, elem0, elem1, label_hash, menu_label_hash);
menu_entries_cbs_init_bind_iterate(cbs, path, label, type, idx, elem0, elem1, label_hash, menu_label_hash);
menu_entries_cbs_init_bind_get_string_representation(cbs, path, label, type, idx, elem0, elem1, label_hash, menu_label_hash);
menu_entries_cbs_init_bind_title(cbs, path, label, type, idx, elem0, elem1, label_hash, menu_label_hash);
ret = menu_entries_cbs_init_bind_ok(cbs, path, label, type, idx, elem0, elem1, menu_label, label_hash, menu_label_hash);
menu_entries_cbs_init_log(ret, "OK", label, elem0, elem1, type);
ret = menu_entries_cbs_init_bind_cancel(cbs, path, label, type, idx, elem0, elem1, label_hash, menu_label_hash);
menu_entries_cbs_init_log(ret, "CANCEL", label, elem0, elem1, type);
ret = menu_entries_cbs_init_bind_scan(cbs, path, label, type, idx, elem0, elem1, label_hash, menu_label_hash);
menu_entries_cbs_init_log(ret, "SCAN", label, elem0, elem1, type);
ret = menu_entries_cbs_init_bind_start(cbs, path, label, type, idx, elem0, elem1, label_hash, menu_label_hash);
menu_entries_cbs_init_log(ret, "START", label, elem0, elem1, type);
ret = menu_entries_cbs_init_bind_select(cbs, path, label, type, idx, elem0, elem1, label_hash, menu_label_hash);
menu_entries_cbs_init_log(ret, "SELECT", label, elem0, elem1, type);
ret = menu_entries_cbs_init_bind_info(cbs, path, label, type, idx, elem0, elem1, label_hash, menu_label_hash);
menu_entries_cbs_init_log(ret, "INFO", label, elem0, elem1, type);
ret = menu_entries_cbs_init_bind_content_list_switch(cbs, path, label, type, idx, elem0, elem1, label_hash, menu_label_hash);
menu_entries_cbs_init_log(ret, "CONTENT SWITCH", label, elem0, elem1, type);
ret = menu_entries_cbs_init_bind_up(cbs, path, label, type, idx, elem0, elem1, label_hash, menu_label_hash);
menu_entries_cbs_init_log(ret, "UP", label, elem0, elem1, type);
ret = menu_entries_cbs_init_bind_down(cbs, path, label, type, idx, elem0, elem1, label_hash, menu_label_hash);
menu_entries_cbs_init_log(ret, "DOWN", label, elem0, elem1, type);
ret = menu_entries_cbs_init_bind_left(cbs, path, label, type, idx, elem0, elem1, menu_label, label_hash, menu_label_hash);
menu_entries_cbs_init_log(ret, "LEFT", label, elem0, elem1, type);
ret = menu_entries_cbs_init_bind_right(cbs, path, label, type, idx, elem0, elem1, menu_label, label_hash, menu_label_hash);
menu_entries_cbs_init_log(ret, "RIGHT", label, elem0, elem1, type);
ret = menu_entries_cbs_init_bind_deferred_push(cbs, path, label, type, idx, elem0, elem1, label_hash, menu_label_hash);
menu_entries_cbs_init_log(ret, "DEFERRED PUSH", label, elem0, elem1, type);
ret = menu_entries_cbs_init_bind_refresh(cbs, path, label, type, idx, elem0, elem1, label_hash, menu_label_hash);
menu_entries_cbs_init_log(ret, "REFRESH", label, elem0, elem1, type);
ret = menu_entries_cbs_init_bind_iterate(cbs, path, label, type, idx, elem0, elem1, label_hash, menu_label_hash);
menu_entries_cbs_init_log(ret, "ITERATE", label, elem0, elem1, type);
ret = menu_entries_cbs_init_bind_get_string_representation(cbs, path, label, type, idx, elem0, elem1, label_hash, menu_label_hash);
menu_entries_cbs_init_log(ret, "REPRESENTATION", label, elem0, elem1, type);
ret = menu_entries_cbs_init_bind_title(cbs, path, label, type, idx, elem0, elem1, label_hash, menu_label_hash);
menu_entries_cbs_init_log(ret, "TITLE", label, elem0, elem1, type);
}

View File

@ -47,82 +47,82 @@ void menu_entries_common_load_content(bool persist);
int menu_entries_common_is_settings_entry(const char *label);
void menu_entries_cbs_init_bind_left(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_left(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1, const char *menu_label,
uint32_t label_hash, uint32_t menu_label_hash);
void menu_entries_cbs_init_bind_right(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_right(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1, const char *menu_label,
uint32_t label_hash, uint32_t menu_label_hash);
void menu_entries_cbs_init_bind_refresh(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_refresh(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1,
uint32_t label_hash, uint32_t menu_label_hash);
void menu_entries_cbs_init_bind_get_string_representation(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_get_string_representation(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1,
uint32_t label_hash, uint32_t menu_label_hash);
void menu_entries_cbs_init_bind_up(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_up(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1,
uint32_t label_hash, uint32_t menu_label_hash);
void menu_entries_cbs_init_bind_down(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_down(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1,
uint32_t label_hash, uint32_t menu_label_hash);
void menu_entries_cbs_init_bind_info(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_info(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1,
uint32_t label_hash, uint32_t menu_label_hash);
void menu_entries_cbs_init_bind_start(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_start(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1,
uint32_t label_hash, uint32_t menu_label_hash);
void menu_entries_cbs_init_bind_content_list_switch(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_content_list_switch(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1,
uint32_t label_hash, uint32_t menu_label_hash);
void menu_entries_cbs_init_bind_cancel(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_cancel(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1,
uint32_t label_hash, uint32_t menu_label_hash);
void menu_entries_cbs_init_bind_ok(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_ok(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1, const char *menu_label,
uint32_t label_hash, uint32_t menu_label_hash);
void menu_entries_cbs_init_bind_iterate(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_iterate(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1,
uint32_t label_hash, uint32_t menu_label_hash);
void menu_entries_cbs_init_bind_deferred_push(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_deferred_push(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1,
uint32_t label_hash, uint32_t menu_label_hash);
void menu_entries_cbs_init_bind_select(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_select(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1,
uint32_t label_hash, uint32_t menu_label_hash);
void menu_entries_cbs_init_bind_scan(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_scan(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1,
uint32_t label_hash, uint32_t menu_label_hash);
void menu_entries_cbs_init_bind_title(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_title(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1,
uint32_t label_hash, uint32_t menu_label_hash);

View File

@ -25,13 +25,15 @@ static int action_cancel_pop_default(const char *path,
return menu_entry_go_back();
}
void menu_entries_cbs_init_bind_cancel(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_cancel(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1,
uint32_t label_hash, uint32_t menu_label_hash)
{
if (!cbs)
return;
return -1;
cbs->action_cancel = action_cancel_pop_default;
return -1;
}

View File

@ -16,13 +16,15 @@
#include "menu.h"
#include "menu_entries_cbs.h"
void menu_entries_cbs_init_bind_content_list_switch(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_content_list_switch(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1,
uint32_t label_hash, uint32_t menu_label_hash)
{
if (!cbs)
return;
return -1;
cbs->action_content_list_switch = deferred_push_content_list;
return -1;
}

View File

@ -624,7 +624,7 @@ static int menu_entries_cbs_init_bind_deferred_push_compare_type(menu_file_list_
return 0;
}
void menu_entries_cbs_init_bind_deferred_push(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_deferred_push(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1,
uint32_t label_hash, uint32_t menu_label_hash)
@ -632,7 +632,7 @@ void menu_entries_cbs_init_bind_deferred_push(menu_file_list_cbs_t *cbs,
settings_t *settings = config_get_ptr();
if (!cbs)
return;
return -1;
cbs->action_deferred_push = deferred_push_default;
@ -643,13 +643,16 @@ void menu_entries_cbs_init_bind_deferred_push(menu_file_list_cbs_t *cbs,
if (!settings->menu.collapse_subgroups_enable)
{
cbs->action_deferred_push = deferred_push_settings_subgroup;
return;
return 0;
}
}
}
if (menu_entries_cbs_init_bind_deferred_push_compare_label(cbs, label, label_hash) == 0)
return;
return 0;
menu_entries_cbs_init_bind_deferred_push_compare_type(cbs, type, label_hash);
if (menu_entries_cbs_init_bind_deferred_push_compare_type(cbs, type, label_hash) == 0)
return 0;
return -1;
}

View File

@ -34,13 +34,15 @@ static int action_bind_down_generic(unsigned type, const char *label)
return 0;
}
void menu_entries_cbs_init_bind_down(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_down(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1,
uint32_t label_hash, uint32_t menu_label_hash)
{
if (!cbs)
return;
return -1;
cbs->action_down = action_bind_down_generic;
return -1;
}

View File

@ -29,13 +29,15 @@ static int action_info_default(unsigned type, const char *label)
return menu_displaylist_push_list(&info, DISPLAYLIST_HELP);
}
void menu_entries_cbs_init_bind_info(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_info(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1,
uint32_t label_hash, uint32_t menu_label_hash)
{
if (!cbs)
return;
return -1;
cbs->action_info = action_info_default;
return -1;
}

View File

@ -579,13 +579,15 @@ static int action_iterate_main(const char *label, unsigned action)
return ret;
}
void menu_entries_cbs_init_bind_iterate(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_iterate(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1,
uint32_t label_hash, uint32_t menu_label_hash)
{
if (!cbs)
return;
return -1;
cbs->action_iterate = action_iterate_main;
return -1;
}

View File

@ -462,27 +462,30 @@ static int menu_entries_cbs_init_bind_left_compare_type(menu_file_list_cbs_t *cb
return 0;
}
void menu_entries_cbs_init_bind_left(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_left(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1, const char *menu_label,
uint32_t label_hash, uint32_t menu_label_hash)
{
if (!cbs)
return;
return -1;
if (label)
{
if (menu_entries_common_is_settings_entry(elem0))
{
cbs->action_left = action_left_scroll;
return;
return 0;
}
}
cbs->action_left = bind_left_generic;
if (menu_entries_cbs_init_bind_left_compare_label(cbs, label, label_hash) == 0)
return;
return 0;
menu_entries_cbs_init_bind_left_compare_type(cbs, type, menu_label_hash);
if (menu_entries_cbs_init_bind_left_compare_type(cbs, type, menu_label_hash) == 0)
return 0;
return -1;
}

View File

@ -1742,24 +1742,21 @@ static int menu_entries_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs,
return 0;
}
void menu_entries_cbs_init_bind_ok(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_ok(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1, const char *menu_label,
uint32_t label_hash, uint32_t menu_label_hash)
{
menu_handle_t *menu = menu_driver_get_ptr();
if (!cbs || !menu)
return;
#if 0
RARCH_LOG("path: %s, label: %s, elem0 : %s, elem1: %s\n", path, label, elem0, elem1);
#endif
if (!cbs)
return -1;
cbs->action_ok = action_ok_lookup_setting;
if (menu_entries_cbs_init_bind_ok_compare_label(cbs, label, label_hash, elem0) == 0)
return;
return 0;
menu_entries_cbs_init_bind_ok_compare_type(cbs, label_hash, menu_label_hash, type);
if (menu_entries_cbs_init_bind_ok_compare_type(cbs, label_hash, menu_label_hash, type) == 0)
return 0;
return -1;
}

View File

@ -22,11 +22,15 @@ static int action_refresh_default(file_list_t *list, file_list_t *menu_list)
return menu_displaylist_push(list, menu_list);
}
void menu_entries_cbs_init_bind_refresh(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_refresh(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1,
uint32_t label_hash, uint32_t menu_label_hash)
{
if (cbs)
cbs->action_refresh = action_refresh_default;
if (!cbs)
return -1;
cbs->action_refresh = action_refresh_default;
return -1;
}

View File

@ -962,16 +962,19 @@ static int menu_entries_cbs_init_bind_get_string_representation_compare_type(
return 0;
}
void menu_entries_cbs_init_bind_get_string_representation(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_get_string_representation(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1,
uint32_t label_hash, uint32_t menu_label_hash)
{
if (!cbs)
return;
return -1;
if (menu_entries_cbs_init_bind_get_string_representation_compare_label(cbs, label_hash) == 0)
return;
return 0;
menu_entries_cbs_init_bind_get_string_representation_compare_type(cbs, type);
if (menu_entries_cbs_init_bind_get_string_representation_compare_type(cbs, type) == 0)
return 0;
return -1;
}

View File

@ -465,27 +465,30 @@ static int menu_entries_cbs_init_bind_right_compare_label(menu_file_list_cbs_t *
return 0;
}
void menu_entries_cbs_init_bind_right(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_right(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1, const char *menu_label,
uint32_t label_hash, uint32_t menu_label_hash)
{
if (!cbs)
return;
return -1;
if (label)
{
if (menu_entries_common_is_settings_entry(elem0))
{
cbs->action_right = action_right_scroll;
return;
return 0;
}
}
cbs->action_right = bind_right_generic;
if (menu_entries_cbs_init_bind_right_compare_label(cbs, label, label_hash, menu_label_hash) == 0)
return;
return 0;
menu_entries_cbs_init_bind_right_compare_type(cbs, type, menu_label_hash);
if (menu_entries_cbs_init_bind_right_compare_type(cbs, type, menu_label_hash) == 0)
return 0;
return -1;
}

View File

@ -55,16 +55,17 @@ static int menu_entries_cbs_init_bind_scan_compare_type(menu_file_list_cbs_t *cb
return 0;
}
void menu_entries_cbs_init_bind_scan(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_scan(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1,
uint32_t label_hash, uint32_t menu_label_hash)
{
if (!cbs)
return;
return -1;
cbs->action_scan = NULL;
menu_entries_cbs_init_bind_scan_compare_type(cbs, type);
return -1;
}

View File

@ -103,15 +103,18 @@ static int menu_entries_cbs_init_bind_select_compare_type(
return 0;
}
void menu_entries_cbs_init_bind_select(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_select(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1,
uint32_t label_hash, uint32_t menu_label_hash)
{
if (!cbs)
return;
return -1;
cbs->action_select = action_select_default;
menu_entries_cbs_init_bind_select_compare_type(cbs, type);
if (menu_entries_cbs_init_bind_select_compare_type(cbs, type) == 0)
return 0;
return -1;
}

View File

@ -323,18 +323,21 @@ static int menu_entries_cbs_init_bind_start_compare_type(menu_file_list_cbs_t *c
return 0;
}
void menu_entries_cbs_init_bind_start(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_start(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1,
uint32_t label_hash, uint32_t menu_label_hash)
{
if (!cbs)
return;
return -1;
cbs->action_start = action_start_lookup_setting;
if (menu_entries_cbs_init_bind_start_compare_label(cbs, label_hash) == 0)
return;
return 0;
menu_entries_cbs_init_bind_start_compare_type(cbs, type);
if (menu_entries_cbs_init_bind_start_compare_type(cbs, type) == 0)
return 0;
return -1;
}

View File

@ -320,13 +320,15 @@ static int action_get_title_default(const char *path, const char *label,
return 0;
}
void menu_entries_cbs_init_bind_title(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_title(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1,
uint32_t label_hash, uint32_t menu_label_hash)
{
if (!cbs)
return;
return -1;
cbs->action_get_title = action_get_title_default;
return -1;
}

View File

@ -34,13 +34,15 @@ static int action_bind_up_generic(unsigned type, const char *label)
return 0;
}
void menu_entries_cbs_init_bind_up(menu_file_list_cbs_t *cbs,
int menu_entries_cbs_init_bind_up(menu_file_list_cbs_t *cbs,
const char *path, const char *label, unsigned type, size_t idx,
const char *elem0, const char *elem1,
uint32_t label_hash, uint32_t menu_label_hash)
{
if (!cbs)
return;
return -1;
cbs->action_up = action_bind_up_generic;
return -1;
}