X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=plugins%2Fdfxvideo%2Fdraw_fb.c;fp=plugins%2Fdfxvideo%2Fdraw_fb.c;h=af05dd293c866dcf6f49d02c9db865363aab84dc;hp=b39e2ee6ab1592ea7c9135fe3c0c28d49c8a9bcd;hb=722285599b1ce45ca435f484b0f34a5e568487a1;hpb=d352cde27e89b1be21bf8f88c3ca79e0eb497165 diff --git a/plugins/dfxvideo/draw_fb.c b/plugins/dfxvideo/draw_fb.c index b39e2ee6..af05dd29 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