From 2f546f9ace7c7e4b0957aff512dc0616b01b3976 Mon Sep 17 00:00:00 2001 From: notaz Date: Wed, 5 Oct 2011 23:32:35 +0300 Subject: recompilation-caused frameskip workaround --- frontend/plugin_lib.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'frontend') 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); -- cgit v1.2.3