From bcbe4aa4b45d8d37a6a3f1d80b4da1f3beb2be16 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 4 Dec 2012 14:36:01 +0100 Subject: [PATCH] libretro: call video_cb on every frame We need to do video_cb in retro_run every frame instead of just once every time the video callback is called - otherwise we will get very bad/skippy framerates. Performance is much improved now in nearly all games. --- frontend/libretro.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/frontend/libretro.c b/frontend/libretro.c index 49e346b5..e5058045 100644 --- a/frontend/libretro.c +++ b/frontend/libretro.c @@ -62,6 +62,9 @@ static void convert(void *buf, size_t bytes) } #endif +static unsigned game_width; +static unsigned game_height; + static void vout_flip(const void *vram, int stride, int bgr24, int w, int h) { unsigned short *dest = vout_buf; @@ -94,8 +97,8 @@ out: #ifndef FRONTEND_SUPPORTS_RGB565 convert(vout_buf, w * h * 2); #endif - video_cb(vout_buf, w, h, w * 2); - pl_rearmed_cbs.flip_cnt++; + game_width = w; + game_height = h; } static void vout_close(void) @@ -353,6 +356,8 @@ void retro_run(void) psxCpu->Execute(); samples_to_send += 44100 / 60; + video_cb(vout_buf, game_width, game_height, game_width * 2); + pl_rearmed_cbs.flip_cnt++; } void retro_init(void) -- 2.39.5