From 81edd2b39a4efb991c4eaab15db4dd20ae3eafda Mon Sep 17 00:00:00 2001 From: notaz Date: Sat, 5 Jan 2013 00:06:41 +0200 Subject: [PATCH] frontend: don't update during reset otherwise update thread may collect input events that really belong to UI. Another hack :( --- frontend/main.c | 4 +++- frontend/main.h | 2 +- frontend/plugin_lib.c | 3 +++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/frontend/main.c b/frontend/main.c index bd488989..43a1a032 100644 --- a/frontend/main.c +++ b/frontend/main.c @@ -48,7 +48,7 @@ extern int iUseInterpolation; extern int iXAPitch; extern int iVolume; -int ready_to_go; +int ready_to_go, g_resetting; unsigned long gpuDisp; char cfgfile_basename[MAXPATHLEN]; int state_slot; @@ -676,6 +676,7 @@ void SysReset() { // so we need to prevent updateLace() call.. void *real_lace = GPU_updateLace; GPU_updateLace = dummy_lace; + g_resetting = 1; // reset can run code, timing must be set pl_timing_prepare(Config.PsxType); @@ -686,6 +687,7 @@ void SysReset() { CDR_stop(); GPU_updateLace = real_lace; + g_resetting = 0; } void SysClose() { diff --git a/frontend/main.h b/frontend/main.h index 45e0aebb..d9718906 100644 --- a/frontend/main.h +++ b/frontend/main.h @@ -52,7 +52,7 @@ int emu_load_state(int slot); void set_cd_image(const char *fname); extern unsigned long gpuDisp; -extern int ready_to_go; +extern int ready_to_go, g_resetting; extern char hud_msg[64]; extern int hud_new_msg; diff --git a/frontend/plugin_lib.c b/frontend/plugin_lib.c index 472a1b2c..dfff8681 100644 --- a/frontend/plugin_lib.c +++ b/frontend/plugin_lib.c @@ -606,6 +606,9 @@ void pl_frame_limit(void) struct timeval now; int diff, usadj; + if (g_resetting) + return; + vsync_cnt++; /* doing input here because the pad is polled -- 2.39.5