From: notaz Date: Wed, 6 Jul 2011 18:38:18 +0000 (+0000) Subject: menu: add pre-draw func and move pico ext filter X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c7d27148ae9cf40204bf965561b9b57daff15521;p=libpicofe.git menu: add pre-draw func and move pico ext filter git-svn-id: file:///home/notaz/opt/svn/PicoDrive/platform@931 be3aeb3a-fb24-0410-a615-afba39da0efa --- diff --git a/common/menu.c b/common/menu.c index b05c755..f55b48d 100644 --- a/common/menu.c +++ b/common/menu.c @@ -573,14 +573,14 @@ static int me_process(menu_entry *entry, int is_next, int is_lr) static void debug_menu_loop(void); -static void me_loop(menu_entry *menu, int *menu_sel, void (*draw_more)(void)) +static int me_loop_d(menu_entry *menu, int *menu_sel, void (*draw_prep)(void), void (*draw_more)(void)) { - int ret, inp, sel = *menu_sel, menu_sel_max; + int ret = 0, inp, sel = *menu_sel, menu_sel_max; menu_sel_max = me_count(menu) - 1; if (menu_sel_max < 0) { lprintf("no enabled menu entries\n"); - return; + return 0; } while ((!menu[sel].enabled || !menu[sel].selectable) && sel < menu_sel_max) @@ -592,6 +592,9 @@ static void me_loop(menu_entry *menu, int *menu_sel, void (*draw_more)(void)) for (;;) { + if (draw_prep != NULL) + draw_prep(); + me_draw(menu, sel, draw_more); inp = in_menu_wait(PBTN_UP|PBTN_DOWN|PBTN_LEFT|PBTN_RIGHT| PBTN_MOK|PBTN_MBACK|PBTN_MENU|PBTN_L|PBTN_R, 70); @@ -636,6 +639,13 @@ static void me_loop(menu_entry *menu, int *menu_sel, void (*draw_more)(void)) } } *menu_sel = sel; + + return ret; +} + +static int me_loop(menu_entry *menu, int *menu_sel) +{ + return me_loop_d(menu, menu_sel, NULL, NULL); } /* ***************************************** */ @@ -766,11 +776,6 @@ static int scandir_cmp(const void *p1, const void *p2) return alphasort(d1, d2); } -static const char *filter_exts[] = { - ".mp3", ".MP3", ".srm", ".brm", "s.gz", ".mds", "bcfg", ".txt", ".htm", "html", - ".jpg", ".gpe" -}; - static int scandir_filter(const struct dirent *ent) { const char *p; diff --git a/common/menu_pico.c b/common/menu_pico.c index abc5845..e0f7c66 100644 --- a/common/menu_pico.c +++ b/common/menu_pico.c @@ -25,6 +25,11 @@ static unsigned short fname2color(const char *fname) return 0xffff; } +static const char *filter_exts[] = { + ".mp3", ".MP3", ".srm", ".brm", "s.gz", ".mds", "bcfg", ".txt", ".htm", "html", + ".jpg", ".gpe" +}; + #include "menu.c" /* platform specific options and handlers */ @@ -309,7 +314,7 @@ static int menu_loop_keyconfig(int id, int keys) static int sel = 0; me_enable(e_menu_keyconfig, MA_OPT_SAVECFG_GAME, rom_loaded); - me_loop(e_menu_keyconfig, &sel, NULL); + me_loop(e_menu_keyconfig, &sel); return 0; } @@ -365,7 +370,7 @@ static menu_entry e_menu_cd_options[] = static int menu_loop_cd_options(int id, int keys) { static int sel = 0; - me_loop(e_menu_cd_options, &sel, NULL); + me_loop(e_menu_cd_options, &sel); return 0; } @@ -420,7 +425,7 @@ static int menu_loop_32x_options(int id, int keys) static int sel = 0; me_enable(e_menu_32x_options, MA_32XOPT_RENDERER, renderer_names32x[0] != NULL); - me_loop(e_menu_32x_options, &sel, NULL); + me_loop(e_menu_32x_options, &sel); return 0; } @@ -447,7 +452,7 @@ static menu_entry e_menu_adv_options[] = static int menu_loop_adv_options(int id, int keys) { static int sel = 0; - me_loop(e_menu_adv_options, &sel, NULL); + me_loop(e_menu_adv_options, &sel); return 0; } @@ -465,7 +470,7 @@ static int menu_loop_gfx_options(int id, int keys) static int sel = 0; me_enable(e_menu_gfx_options, MA_OPT_RENDERER, renderer_names[0] != NULL); - me_loop(e_menu_gfx_options, &sel, NULL); + me_loop(e_menu_gfx_options, &sel); return 0; } @@ -671,7 +676,7 @@ static int menu_loop_options(int id, int keys) me_enable(e_menu_options, MA_OPT_SAVECFG_GAME, rom_loaded); me_enable(e_menu_options, MA_OPT_LOADCFG, config_slot != config_slot_current); - me_loop(e_menu_options, &sel, NULL); + me_loop(e_menu_options, &sel); return 0; } @@ -950,7 +955,7 @@ void menu_loop(void) menu_enter(rom_loaded); in_set_config_int(0, IN_CFG_BLOCKING, 1); - me_loop(e_menu_main, &sel, menu_main_plat_draw); + me_loop_d(e_menu_main, &sel, NULL, menu_main_plat_draw); if (rom_loaded) { if (engineState == PGS_Menu) @@ -999,7 +1004,7 @@ int menu_loop_tray(void) menu_enter(rom_loaded); in_set_config_int(0, IN_CFG_BLOCKING, 1); - me_loop(e_menu_tray, &sel, NULL); + me_loop(e_menu_tray, &sel); if (engineState != PGS_RestartRun) { engineState = PGS_RestartRun;