aboutsummaryrefslogtreecommitdiff
path: root/frontend/plugin_lib.c
diff options
context:
space:
mode:
authornotaz2011-10-05 23:32:35 +0300
committernotaz2011-10-08 03:29:24 +0300
commit2f546f9ace7c7e4b0957aff512dc0616b01b3976 (patch)
treeb9324de11f5211061e98d882ae1ed4e54f6381dd /frontend/plugin_lib.c
parent983a7cfdccceaa612267a1b045110b4f831d1495 (diff)
downloadpcsx_rearmed-2f546f9ace7c7e4b0957aff512dc0616b01b3976.tar.gz
pcsx_rearmed-2f546f9ace7c7e4b0957aff512dc0616b01b3976.tar.bz2
pcsx_rearmed-2f546f9ace7c7e4b0957aff512dc0616b01b3976.zip
recompilation-caused frameskip workaround
Diffstat (limited to 'frontend/plugin_lib.c')
-rw-r--r--frontend/plugin_lib.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/frontend/plugin_lib.c b/frontend/plugin_lib.c
index c719f48..084ff1e 100644
--- a/frontend/plugin_lib.c
+++ b/frontend/plugin_lib.c
@@ -264,7 +264,7 @@ void pl_update_gun(int *xn, int *xres, int *y, int *in)
void pl_frame_limit(void)
{
static struct timeval tv_old, tv_expect;
- static int vsync_cnt_prev;
+ static int vsync_cnt_prev, drc_active_vsyncs;
struct timeval now;
int diff, usadj;
@@ -333,6 +333,17 @@ void pl_frame_limit(void)
pl_rearmed_cbs.fskip_advice = 1;
else if (diff >= 0)
pl_rearmed_cbs.fskip_advice = 0;
+
+ // recompilation is not that fast and may cause frame skip on
+ // loading screens and such, resulting in flicker or glitches
+ if (new_dynarec_did_compile) {
+ if (drc_active_vsyncs < 32)
+ pl_rearmed_cbs.fskip_advice = 0;
+ drc_active_vsyncs++;
+ }
+ else
+ drc_active_vsyncs = 0;
+ new_dynarec_did_compile = 0;
}
pcnt_start(PCNT_ALL);