From 78d78c3b21fbdc32b73b9e4c9e2719a148c32356 Mon Sep 17 00:00:00 2001 From: notaz Date: Mon, 3 Jan 2011 00:14:35 +0200 Subject: [PATCH] gpu_unai: basic frameskip only partially works but oh well --- frontend/plugin_lib.c | 3 +++ frontend/plugin_lib.h | 1 + plugins/dfxvideo/fps.c | 2 +- plugins/gpu_unai/gpu.cpp | 10 +++++++++- 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/frontend/plugin_lib.c b/frontend/plugin_lib.c index d69a0b41..4e65e2e8 100644 --- a/frontend/plugin_lib.c +++ b/frontend/plugin_lib.c @@ -198,11 +198,14 @@ static void pl_get_layer_pos(int *x, int *y, int *w, int *h) *h = g_layer_h; } +extern int UseFrameSkip; // hmh + const struct rearmed_cbs pl_rearmed_cbs = { pl_get_layer_pos, pl_fbdev_open, pl_fbdev_set_mode, pl_fbdev_flip, pl_fbdev_close, + &UseFrameSkip, }; diff --git a/frontend/plugin_lib.h b/frontend/plugin_lib.h index 7a25b817..f5c49851 100644 --- a/frontend/plugin_lib.h +++ b/frontend/plugin_lib.h @@ -34,6 +34,7 @@ struct rearmed_cbs { int (*pl_fbdev_set_mode)(int w, int h, int bpp); void *(*pl_fbdev_flip)(void); void (*pl_fbdev_close)(void); + int *fskip_option; }; extern const struct rearmed_cbs pl_rearmed_cbs; diff --git a/plugins/dfxvideo/fps.c b/plugins/dfxvideo/fps.c index 2edcd30b..b0c87dd9 100644 --- a/plugins/dfxvideo/fps.c +++ b/plugins/dfxvideo/fps.c @@ -57,7 +57,7 @@ void CheckFrameRate(void) else // non-skipping mode: { if(UseFrameLimit) FrameCap(); // -> do it - if(ulKeybits&KEY_SHOWFPS) calcfps(); // -> and calc fps display + /*if(ulKeybits&KEY_SHOWFPS)*/ calcfps(); // -> and calc fps display } } diff --git a/plugins/gpu_unai/gpu.cpp b/plugins/gpu_unai/gpu.cpp index 8a13521d..fa19b637 100644 --- a/plugins/gpu_unai/gpu.cpp +++ b/plugins/gpu_unai/gpu.cpp @@ -911,7 +911,15 @@ void GPU_updateLace(void) if (!fb_dirty || (GPU_GP1&0x08800000)) return; - blit(); + if (!isSkip) { + blit(); + + fb_dirty = false; + if (*cbs->fskip_option) + isSkip = true; + } + else + isSkip = false; } long GPUopen(unsigned long *, char *, char *) -- 2.39.2