X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=common%2Fmenu.c;h=8e3b9dd0b1bc4087d6b37c8b18b466b1c4c0ffec;hb=61d87c7eddb013b1ca1275ffc2c2e3a51d5136a7;hp=4393ed5172f617a954ce710fe78e1e95f89a4209;hpb=35cbf2ec89d87204288d4d40ad46bf77361e5cfe;p=libpicofe.git diff --git a/common/menu.c b/common/menu.c index 4393ed5..8e3b9dd 100644 --- a/common/menu.c +++ b/common/menu.c @@ -23,7 +23,7 @@ #include static char static_buff[64]; -static char menu_error_msg[64] = { 0, }; +char menu_error_msg[64] = { 0, }; static int menu_error_time = 0; #ifndef UIQ3 @@ -276,7 +276,8 @@ void menu_init(void) lprintf("found skin.txt\n"); while (!feof(f)) { - fgets(buff, sizeof(buff), f); + if (fgets(buff, sizeof(buff), f) == NULL) + break; if (buff[0] == '#' || buff[0] == '/') continue; // comment if (buff[0] == '\r' || buff[0] == '\n') continue; // empty line if (strncmp(buff, "text_color=", 11) == 0) @@ -744,10 +745,15 @@ static void draw_dirlist(char *curdir, struct dirent **namelist, int n, int sel) static int scandir_cmp(const void *p1, const void *p2) { - struct dirent **d1 = (struct dirent **)p1, **d2 = (struct dirent **)p2; - if ((*d1)->d_type == (*d2)->d_type) return alphasort(d1, d2); - if ((*d1)->d_type == DT_DIR) return -1; // put before - if ((*d2)->d_type == DT_DIR) return 1; + const struct dirent **d1 = (const struct dirent **)p1; + const struct dirent **d2 = (const struct dirent **)p2; + if ((*d1)->d_type == (*d2)->d_type) + return alphasort(d1, d2); + if ((*d1)->d_type == DT_DIR) + return -1; // put before + if ((*d2)->d_type == DT_DIR) + return 1; + return alphasort(d1, d2); } @@ -789,13 +795,13 @@ rescan: fname = p+1; } - n = scandir(curr_path, &namelist, scandir_filter, scandir_cmp); + n = scandir(curr_path, &namelist, scandir_filter, (void *)scandir_cmp); if (n < 0) { lprintf("menu_loop_romsel failed, dir: %s\n", curr_path); // try root - getcwd(curr_path, len); - n = scandir(curr_path, &namelist, scandir_filter, scandir_cmp); + plat_get_root_dir(curr_path, len); + n = scandir(curr_path, &namelist, scandir_filter, (void *)scandir_cmp); if (n < 0) { // oops, we failed lprintf("menu_loop_romsel failed, dir: %s\n", curr_path); @@ -1424,6 +1430,21 @@ static int menu_loop_cd_options(menu_id id, int keys) return 0; } +// ------------ 32X options menu ------------ + +static menu_entry e_menu_32x_options[] = +{ + mee_onoff("32X enabled", MA_32XOPT_ENABLE_32X, PicoOpt, POPT_EN_32X), + mee_onoff("PWM sound", MA_32XOPT_PWM, PicoOpt, POPT_EN_PWM), +}; + +static int menu_loop_32x_options(menu_id id, int keys) +{ + static int sel = 0; + me_loop(e_menu_32x_options, &sel, NULL); + return 0; +} + // ------------ adv options menu ------------ static menu_entry e_menu_adv_options[] = @@ -1672,6 +1693,7 @@ static menu_entry e_menu_options[] = mee_range (cpu_clk_name, MA_OPT_CPU_CLOCKS, currentConfig.CPUclock, 20, 900), mee_handler ("[Display options]", menu_loop_gfx_options), mee_handler ("[Sega/Mega CD options]", menu_loop_cd_options), + mee_handler ("[32X options]", menu_loop_32x_options), mee_handler ("[Advanced options]", menu_loop_adv_options), mee_handler_mkname_id(MA_OPT_SAVECFG, mh_saveloadcfg, mgn_savecfg), mee_handler_id("Save cfg for current game only", MA_OPT_SAVECFG_GAME, mh_saveloadcfg), @@ -2079,6 +2101,7 @@ static menu_entry *e_menu_table[] = e_menu_gfx_options, e_menu_adv_options, e_menu_cd_options, + e_menu_32x_options, e_menu_keyconfig, e_menu_hidden, };