From 722285599b1ce45ca435f484b0f34a5e568487a1 Mon Sep 17 00:00:00 2001 From: notaz Date: Sat, 11 Dec 2010 23:11:46 +0200 Subject: refactor OSD code and PCNT stuff --- plugins/dfxvideo/draw_fb.c | 38 ++++++++------------------------------ 1 file changed, 8 insertions(+), 30 deletions(-) (limited to 'plugins/dfxvideo/draw_fb.c') diff --git a/plugins/dfxvideo/draw_fb.c b/plugins/dfxvideo/draw_fb.c index b39e2ee..af05dd2 100644 --- a/plugins/dfxvideo/draw_fb.c +++ b/plugins/dfxvideo/draw_fb.c @@ -16,6 +16,7 @@ #include "swap.h" #include "plugin_lib.h" +#include "pcnt.h" // misc globals int iResX; @@ -36,9 +37,6 @@ PSXPoint_t ptCursorPoint[8]; unsigned short usCursorActive = 0; char * pCaptionText; -static int fbw, fbh, fb24bpp; -static int flip_cnt, flips_per_sec; - #ifndef __arm__ #define bgr555_to_rgb565 memcpy #define bgr888_to_rgb888 memcpy @@ -81,50 +79,30 @@ static void blit(void) { bgr555_to_rgb565(dest, srcs, w * 2); } - pl_text_out16(2, fbh - 10, "%2d %2.1f", flips_per_sec, fps_cur); } } -#include "pcnt.h" - void DoBufferSwap(void) { - static int fps_counter; + static int fbw, fb24bpp; + if (PSXDisplay.DisplayMode.x == 0 || PSXDisplay.DisplayMode.y == 0) return; /* careful if rearranging this code, we try to set mode and flip * to get the hardware apply both changes at the same time */ - if (PSXDisplay.DisplayMode.x != fbw || PSXDisplay.DisplayMode.y != fbh - || PSXDisplay.RGB24 != fb24bpp) { + if (PSXDisplay.DisplayMode.x != fbw || PSXDisplay.RGB24 != fb24bpp) { + int fbh = PSXDisplay.DisplayMode.y; fbw = PSXDisplay.DisplayMode.x; - fbh = PSXDisplay.DisplayMode.y; fb24bpp = PSXDisplay.RGB24; pl_fbdev_set_mode(fbw, fbh, fb24bpp ? 24 : 16); } + pcnt_start(PCNT_BLIT); blit(); - pl_fbdev_flip(); - - pcnt_end(PCNT_ALL); + pcnt_end(PCNT_BLIT); - { - static int oldsec; - struct timeval tv; - flip_cnt++; - gettimeofday(&tv, 0); - if (tv.tv_sec != oldsec) { - flips_per_sec = flip_cnt; - flip_cnt = 0; - oldsec = tv.tv_sec; - } - } - if (++fps_counter == 60/6) { - pcnt_print(fps_cur); - fps_counter = 0; - } - - pcnt_start(PCNT_ALL); + pl_fbdev_flip(); } void DoClearScreenBuffer(void) // CLEAR DX BUFFER -- cgit v1.2.3