X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=frontend%2Fmenu.c;h=7dab2e6897b65ce9e8c367e742e5a9498e40c848;hp=8e182bf610a1ca1b4486a4f2dabcc04bcde81370;hb=c0c64e603a2d6d220817ca538e1b5cacd8a8ad40;hpb=1f84e117ae9b49f6ed72c7243fd514dd1a9e581b diff --git a/frontend/menu.c b/frontend/menu.c index 8e182bf6..7dab2e68 100644 --- a/frontend/menu.c +++ b/frontend/menu.c @@ -211,7 +211,7 @@ static int optional_cdimg_filter(struct dirent **namelist, int count, const char *ext, *p; char buf[256], buf2[256]; int i, d, ret, good_cue; - struct stat statf; + struct stat64 statf; FILE *f; for (i = 1; i < count; i++) { @@ -255,7 +255,7 @@ static int optional_cdimg_filter(struct dirent **namelist, int count, p = buf2; snprintf(buf, sizeof(buf), "%s/%s", basedir, p); - ret = stat(buf, &statf); + ret = stat64(buf, &statf); if (ret == 0) { rm_namelist_entry(namelist, count, p); good_cue = 1; @@ -510,7 +510,7 @@ static int menu_do_last_cd_img(int is_get) { static const char *defaults[] = { "/media", "/mnt/sd", "/mnt" }; char path[256]; - struct stat st; + struct stat64 st; FILE *f; int i, ret = -1; @@ -533,7 +533,7 @@ static int menu_do_last_cd_img(int is_get) out: if (is_get) { for (i = 0; last_selected_fname[0] == 0 - || stat(last_selected_fname, &st) != 0; i++) + || stat64(last_selected_fname, &st) != 0; i++) { if (i >= ARRAY_SIZE(defaults)) break; @@ -666,7 +666,7 @@ fail: static const char *filter_exts[] = { "bin", "img", "mdf", "iso", "cue", "z", - "bz", "znx", "pbp", "cbn" + "bz", "znx", "pbp", "cbn", NULL }; // rrrr rggg gggb bbbb @@ -681,7 +681,7 @@ static unsigned short fname2color(const char *fname) if (ext == NULL) return 0xffff; ext++; - for (i = 0; i < array_size(filter_exts); i++) + for (i = 0; filter_exts[i] != NULL; i++) if (strcasecmp(ext, filter_exts[i]) == 0) return 0x7bff; for (i = 0; i < array_size(other_exts); i++) @@ -721,8 +721,8 @@ static void draw_savestate_bg(int slot) if (f == NULL) return; - if (gzseek(f, 0x29933d, SEEK_SET) != 0x29933d) { - fprintf(stderr, "gzseek failed\n"); + if ((ret = (int)gzseek(f, 0x29933d, SEEK_SET)) != 0x29933d) { + fprintf(stderr, "gzseek failed: %d\n", ret); gzclose(f); return; } @@ -1936,10 +1936,11 @@ static int run_bios(void) static int run_exe(void) { + const char *exts[] = { "exe", NULL }; const char *fname; fname = menu_loop_romsel(last_selected_fname, - sizeof(last_selected_fname), NULL); + sizeof(last_selected_fname), exts, NULL); if (fname == NULL) return -1; @@ -1994,7 +1995,8 @@ static int romsel_run(void) const char *fname; fname = menu_loop_romsel(last_selected_fname, - sizeof(last_selected_fname), optional_cdimg_filter); + sizeof(last_selected_fname), filter_exts, + optional_cdimg_filter); if (fname == NULL) return -1; @@ -2025,10 +2027,11 @@ static int romsel_run(void) static int swap_cd_image(void) { - char *fname; + const char *fname; fname = menu_loop_romsel(last_selected_fname, - sizeof(last_selected_fname), optional_cdimg_filter); + sizeof(last_selected_fname), filter_exts, + optional_cdimg_filter); if (fname == NULL) return -1; @@ -2074,11 +2077,12 @@ static int swap_cd_multidisk(void) static void load_pcsx_cht(void) { + const char *exts[] = { "cht", NULL }; + const char *fname; char path[256]; - char *fname; path[0] = 0; - fname = menu_loop_romsel(path, sizeof(path), NULL); + fname = menu_loop_romsel(path, sizeof(path), exts, NULL); if (fname == NULL) return; @@ -2499,9 +2503,12 @@ void menu_prepare_emu(void) plat_video_menu_leave(); psxCpu = (Config.Cpu == CPU_INTERPRETER) ? &psxInt : &psxRec; - if (psxCpu != prev_cpu) + if (psxCpu != prev_cpu) { + prev_cpu->Shutdown(); + psxCpu->Init(); // note that this does not really reset, just clears drc caches psxCpu->Reset(); + } // core doesn't care about Config.Cdda changes, // so handle them manually here