From 81edd2b39a4efb991c4eaab15db4dd20ae3eafda Mon Sep 17 00:00:00 2001
From: notaz <notasas@gmail.com>
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