extern int iXAPitch;
extern int iVolume;
-int ready_to_go, g_resetting;
+int ready_to_go, g_emu_want_quit, g_emu_resetting;
unsigned long gpuDisp;
char cfgfile_basename[MAXPATHLEN];
int state_slot;
// it may be redefined by -cfg on the command line
strcpy(cfgfile_basename, "pcsx.cfg");
+#ifdef IOS
+ emuLog = fopen("/User/Documents/pcsxr.log", "w");
+ if (emuLog == NULL)
+ emuLog = fopen("pcsxr.log", "w");
+ if (emuLog == NULL)
+#endif
emuLog = stdout;
+
SetIsoFile(NULL);
memset(&Config, 0, sizeof(Config));
return 0;
}
+void emu_core_ask_exit(void)
+{
+ stop = 1;
+ g_emu_want_quit = 1;
+}
+
#ifndef NO_FRONTEND
static void create_profile_dir(const char *directory) {
char path[MAXPATHLEN];
pl_start_watchdog();
- while (1)
+ while (!g_emu_want_quit)
{
stop = 0;
emu_action = SACTION_NONE;
do_emu_action();
}
+ printf("Exit..\n");
+ ClosePlugins();
+ SysClose();
+ menu_finish();
+ plat_finish();
+
return 0;
}
snprintf(hud_msg, sizeof(hud_msg), "FAST FORWARD %s",
fast_forward ? "ON" : "OFF");
}
+
+static void SignalExit(int sig) {
+ // only to restore framebuffer/resolution on some devices
+ plat_finish();
+ exit(1);
+}
#endif
void SysRunGui() {
// so we need to prevent updateLace() call..
void *real_lace = GPU_updateLace;
GPU_updateLace = dummy_lace;
- g_resetting = 1;
+ g_emu_resetting = 1;
// reset can run code, timing must be set
pl_timing_prepare(Config.PsxType);
CDR_stop();
GPU_updateLace = real_lace;
- g_resetting = 0;
+ g_emu_resetting = 0;
}
void SysClose() {
StopDebugger();
- if (emuLog != NULL) fclose(emuLog);
+ if (emuLog != NULL && emuLog != stdout && emuLog != stderr) {
+ fclose(emuLog);
+ emuLog = NULL;
+ }
}
void SysUpdate() {
}
-void OnFile_Exit() {
- printf("OnFile_Exit\n");
- SysClose();
-#ifndef NO_FRONTEND
- menu_finish();
- plat_finish();
- exit(0);
-#endif
-}
-
int get_state_filename(char *buf, int size, int i) {
return get_gameid_filename(buf, size,
"." STATES_DIR "%.32s-%.9s.%3.3d", i);
va_start(list, fmt);
vfprintf(emuLog, fmt, list);
va_end(list);
+ fflush(emuLog);
}
#else
SysPrintf("%s\n", msg);
}
-static void SignalExit(int sig) {
- ClosePlugins();
- OnFile_Exit();
-}
-
#define PARSEPATH(dst, src) \
ptr = src + strlen(src); \
while (*ptr != '\\' && ptr != src) ptr--; \
static int _OpenPlugins(void) {
int ret;
+#ifndef NO_FRONTEND
signal(SIGINT, SignalExit);
signal(SIGPIPE, SignalExit);
+#endif
GPU_clearDynarec(clearDynarec);
void ClosePlugins() {
int ret;
+#ifndef NO_FRONTEND
signal(SIGINT, SIG_DFL);
signal(SIGPIPE, SIG_DFL);
+#endif
+
ret = CDR_close();
if (ret < 0) { SysMessage(_("Error closing CD-ROM plugin!")); return; }
ret = SPU_close();