diff --git a/gfx/common/x11_common.c b/gfx/common/x11_common.c index 6020024ffd..ad7bcda613 100644 --- a/gfx/common/x11_common.c +++ b/gfx/common/x11_common.c @@ -726,7 +726,8 @@ void x11_update_window_title(void *data, video_frame_info_t video_info) buf[0] = buf_fps[0] = '\0'; - if (video_monitor_get_fps(buf, sizeof(buf), buf_fps, sizeof(buf_fps))) + if (video_monitor_get_fps(video_info, + buf, sizeof(buf), buf_fps, sizeof(buf_fps))) XStoreName(g_x11_dpy, g_x11_win, buf); if (video_info.fps_show) runloop_msg_queue_push(buf_fps, 1, 1, false); diff --git a/gfx/drivers/drm_gfx.c b/gfx/drivers/drm_gfx.c index 5ccbeac671..6382682b96 100644 --- a/gfx/drivers/drm_gfx.c +++ b/gfx/drivers/drm_gfx.c @@ -782,7 +782,9 @@ static bool drm_gfx_frame(void *data, const void *frame, unsigned width, if (_drmvars->menu_active) { char buf[128]; - video_monitor_get_fps(buf, sizeof(buf), NULL, 0); + buf[0] = '\0'; + + video_monitor_get_fps(video_info, buf, sizeof(buf), NULL, 0); } /* Update main surface: locate free page, blit and flip. */ diff --git a/gfx/drivers/exynos_gfx.c b/gfx/drivers/exynos_gfx.c index 36d6e0d8d0..ddf6ed0c72 100644 --- a/gfx/drivers/exynos_gfx.c +++ b/gfx/drivers/exynos_gfx.c @@ -1311,7 +1311,7 @@ static bool exynos_gfx_frame(void *data, const void *frame, unsigned width, buffer[0] = buffer_fps[0] = '\0'; - video_monitor_get_fps(buffer, sizeof(buffer), + video_monitor_get_fps(video_info, buffer, sizeof(buffer), video_info.fps_show ? buffer_fps : NULL, sizeof(buffer_fps)); runloop_msg_queue_push(buffer_fps, 1, 1, false); } diff --git a/gfx/drivers/gx_gfx.c b/gfx/drivers/gx_gfx.c index 4fcaf45918..5cb4b31d98 100644 --- a/gfx/drivers/gx_gfx.c +++ b/gfx/drivers/gx_gfx.c @@ -1537,7 +1537,7 @@ static bool gx_frame(void *data, const void *frame, GX_DrawDone(); - video_monitor_get_fps(fps_txt, sizeof(fps_txt), + video_monitor_get_fps(video_info, fps_txt, sizeof(fps_txt), fps_text_buf, sizeof(fps_text_buf)); if (video_info.fps_show) diff --git a/gfx/drivers/psp1_gfx.c b/gfx/drivers/psp1_gfx.c index 19364a1a2a..fd72786fb0 100644 --- a/gfx/drivers/psp1_gfx.c +++ b/gfx/drivers/psp1_gfx.c @@ -494,7 +494,7 @@ static bool psp_frame(void *data, const void *frame, pspDebugScreenSetXY(0,0); - video_monitor_get_fps(fps_txt, sizeof(fps_txt), + video_monitor_get_fps(video_info, fps_txt, sizeof(fps_txt), video_info.fps_show ? fps_text_buf : NULL, video_info.fps_show ? sizeof(fps_text_buf) : 0); diff --git a/gfx/drivers/sdl2_gfx.c b/gfx/drivers/sdl2_gfx.c index abed41587a..83f2de83ec 100644 --- a/gfx/drivers/sdl2_gfx.c +++ b/gfx/drivers/sdl2_gfx.c @@ -536,7 +536,7 @@ static bool sdl2_gfx_frame(void *data, const void *frame, unsigned width, SDL_RenderPresent(vid->renderer); - if (video_monitor_get_fps(buf, sizeof(buf), NULL, 0)) + if (video_monitor_get_fps(video_info, buf, sizeof(buf), NULL, 0)) SDL_SetWindowTitle(vid->window, buf); return true; diff --git a/gfx/drivers/sdl_gfx.c b/gfx/drivers/sdl_gfx.c index 572b971738..dc7d62e3ea 100644 --- a/gfx/drivers/sdl_gfx.c +++ b/gfx/drivers/sdl_gfx.c @@ -369,7 +369,7 @@ static bool sdl_gfx_frame(void *data, const void *frame, unsigned width, if (SDL_MUSTLOCK(vid->screen)) SDL_UnlockSurface(vid->screen); - if (video_monitor_get_fps(buf, sizeof(buf), NULL, 0)) + if (video_monitor_get_fps(video_info, buf, sizeof(buf), NULL, 0)) SDL_WM_SetCaption(buf, NULL); SDL_Flip(vid->screen); diff --git a/gfx/drivers/sunxi_gfx.c b/gfx/drivers/sunxi_gfx.c index 8c62172f2d..7b426e484a 100644 --- a/gfx/drivers/sunxi_gfx.c +++ b/gfx/drivers/sunxi_gfx.c @@ -781,9 +781,11 @@ static bool sunxi_gfx_frame(void *data, const void *frame, unsigned width, if (_dispvars->menu_active) { - char buf[128] = {0}; + char buf[128]; - video_monitor_get_fps(buf, sizeof(buf), NULL, 0); + buf[0] = '\0'; + + video_monitor_get_fps(video_info, buf, sizeof(buf), NULL, 0); ioctl(_dispvars->sunxi_disp->fd_fb, FBIO_WAITFORVSYNC, 0); return true; } diff --git a/gfx/drivers/vita2d_gfx.c b/gfx/drivers/vita2d_gfx.c index 69f24a2169..7216895202 100644 --- a/gfx/drivers/vita2d_gfx.c +++ b/gfx/drivers/vita2d_gfx.c @@ -209,7 +209,7 @@ static bool vita2d_gfx_frame(void *data, const void *frame, buffer[0] = buffer_fps[0] = '\0'; - video_monitor_get_fps(buffer, sizeof(buffer), + video_monitor_get_fps(video_info, buffer, sizeof(buffer), video_info.fps_show ? buffer_fps : NULL, sizeof(buffer_fps)); runloop_msg_queue_push(buffer_fps, 1, 1, false); } diff --git a/gfx/drivers/xshm_gfx.c b/gfx/drivers/xshm_gfx.c index 6221405a36..8bb8ec9478 100644 --- a/gfx/drivers/xshm_gfx.c +++ b/gfx/drivers/xshm_gfx.c @@ -14,7 +14,7 @@ * If not, see . */ -#define _XOPEN_SOURCE 700 // TODO: this doesn't really belong here. +#define _XOPEN_SOURCE 700 /* TODO: this doesn't really belong here. */ #include #include diff --git a/gfx/drivers/xvideo.c b/gfx/drivers/xvideo.c index 0083a746a2..40797e4e68 100644 --- a/gfx/drivers/xvideo.c +++ b/gfx/drivers/xvideo.c @@ -412,6 +412,7 @@ static void *xv_init(const video_info_t *video, { unsigned i; XWindowAttributes target; + video_frame_info_t video_info; char buf[128] = {0}; XSetWindowAttributes attributes = {0}; XVisualInfo visualtemplate = {0}; @@ -527,7 +528,17 @@ static void *xv_init(const video_info_t *video, XMapWindow(g_x11_dpy, g_x11_win); - if (video_monitor_get_fps(buf, sizeof(buf), NULL, 0)) + video_info.refresh_rate = settings->video.refresh_rate; + video_info.black_frame_insertion = + settings->video.black_frame_insertion; + video_info.hard_sync = settings->video.hard_sync; + video_info.hard_sync_frames = settings->video.hard_sync_frames; + video_info.fps_show = settings->fps_show; + video_info.scale_integer = settings->video.scale_integer; + video_info.aspect_ratio_idx = settings->video.aspect_ratio_idx; + video_info.max_swapchain_images = settings->video.max_swapchain_images; + + if (video_monitor_get_fps(video_info, buf, sizeof(buf), NULL, 0)) XStoreName(g_x11_dpy, g_x11_win, buf); x11_set_window_attr(g_x11_dpy, g_x11_win); diff --git a/gfx/drivers_context/android_ctx.c b/gfx/drivers_context/android_ctx.c index 0c3493a260..fc9a41f9cf 100644 --- a/gfx/drivers_context/android_ctx.c +++ b/gfx/drivers_context/android_ctx.c @@ -319,7 +319,7 @@ static void android_gfx_ctx_update_window_title(void *data, video_frame_info_t v buf[0] = buf_fps[0] = '\0'; - video_monitor_get_fps(buf, sizeof(buf), + video_monitor_get_fps(video_info, buf, sizeof(buf), buf_fps, sizeof(buf_fps)); if (video_info.fps_show) runloop_msg_queue_push(buf_fps, 1, 1, false); diff --git a/gfx/drivers_context/cgl_ctx.c b/gfx/drivers_context/cgl_ctx.c index 2f47daeaa7..4214e32be9 100644 --- a/gfx/drivers_context/cgl_ctx.c +++ b/gfx/drivers_context/cgl_ctx.c @@ -117,7 +117,7 @@ static void gfx_ctx_cgl_update_window_title(void *data, video_frame_info_t video buf[0] = buf_fps[0] = '\0'; - video_monitor_get_fps(buf, sizeof(buf), + video_monitor_get_fps(video_info, buf, sizeof(buf), buf_fps, sizeof(buf_fps)); if (video_info.fps_show) runloop_msg_queue_push(buf_fps, 1, 1, false); diff --git a/gfx/drivers_context/d3d_ctx.cpp b/gfx/drivers_context/d3d_ctx.cpp index ae20d1354d..d6f3e99901 100644 --- a/gfx/drivers_context/d3d_ctx.cpp +++ b/gfx/drivers_context/d3d_ctx.cpp @@ -92,7 +92,7 @@ static void gfx_ctx_d3d_update_title(void *data, video_frame_info_t video_info) buf[0] = buffer_fps[0] = '\0'; - if (window && video_monitor_get_fps(buf, sizeof(buf), + if (window && video_monitor_get_fps(video_info, buf, sizeof(buf), buffer_fps, sizeof(buffer_fps))) { #ifndef _XBOX diff --git a/gfx/drivers_context/drm_ctx.c b/gfx/drivers_context/drm_ctx.c index 5463573528..57602d9327 100644 --- a/gfx/drivers_context/drm_ctx.c +++ b/gfx/drivers_context/drm_ctx.c @@ -278,7 +278,7 @@ static void gfx_ctx_drm_update_window_title(void *data, video_frame_info_t video buf[0] = buf_fps[0] = '\0'; - video_monitor_get_fps(buf, sizeof(buf), + video_monitor_get_fps(video_info, buf, sizeof(buf), buf_fps, sizeof(buf_fps)); if (video_info.fps_show) diff --git a/gfx/drivers_context/emscriptenegl_ctx.c b/gfx/drivers_context/emscriptenegl_ctx.c index ac194f34cc..fc852bc913 100644 --- a/gfx/drivers_context/emscriptenegl_ctx.c +++ b/gfx/drivers_context/emscriptenegl_ctx.c @@ -97,7 +97,7 @@ static void gfx_ctx_emscripten_update_window_title(void *data, video_frame_info_ buf[0] = buf_fps[0] = '\0'; - video_monitor_get_fps(buf, sizeof(buf), + video_monitor_get_fps(video_info, buf, sizeof(buf), buf_fps, sizeof(buf_fps)); if (video_info.fps_show) runloop_msg_queue_push(buf_fps, 1, 1, false); diff --git a/gfx/drivers_context/khr_display_ctx.c b/gfx/drivers_context/khr_display_ctx.c index f3c0dc1b84..339bd0c32d 100644 --- a/gfx/drivers_context/khr_display_ctx.c +++ b/gfx/drivers_context/khr_display_ctx.c @@ -117,7 +117,7 @@ static void gfx_ctx_khr_display_update_window_title(void *data, video_frame_info buf[0] = buf_fps[0] = '\0'; - video_monitor_get_fps(buf, sizeof(buf), + video_monitor_get_fps(video_info, buf, sizeof(buf), buf_fps, sizeof(buf_fps)); if (video_info.fps_show) runloop_msg_queue_push(buf_fps, 1, 1, false); diff --git a/gfx/drivers_context/mali_fbdev_ctx.c b/gfx/drivers_context/mali_fbdev_ctx.c index 413713e802..260d1b7ea7 100644 --- a/gfx/drivers_context/mali_fbdev_ctx.c +++ b/gfx/drivers_context/mali_fbdev_ctx.c @@ -165,7 +165,7 @@ static void gfx_ctx_mali_fbdev_update_window_title(void *data, video_frame_info_ buf[0] = buf_fps[0] = '\0'; - video_monitor_get_fps(buf, sizeof(buf), + video_monitor_get_fps(video_info, buf, sizeof(buf), buf_fps, sizeof(buf_fps)); if (video_info.fps_show) runloop_msg_queue_push(buf_fps, 1, 1, false); diff --git a/gfx/drivers_context/opendingux_fbdev_ctx.c b/gfx/drivers_context/opendingux_fbdev_ctx.c index 5c61086ab9..8711de8830 100644 --- a/gfx/drivers_context/opendingux_fbdev_ctx.c +++ b/gfx/drivers_context/opendingux_fbdev_ctx.c @@ -148,7 +148,7 @@ static void gfx_ctx_opendingux_update_window_title(void *data, video_frame_info_ buf[0] = buf_fps[0] = '\0'; - video_monitor_get_fps(buf, sizeof(buf), + video_monitor_get_fps(video_info, buf, sizeof(buf), buf_fps, sizeof(buf_fps)); if (video_info.fps_show) runloop_msg_queue_push(buf_fps, 1, 1, false); diff --git a/gfx/drivers_context/osmesa_ctx.c b/gfx/drivers_context/osmesa_ctx.c index c283ed06b9..852e4ae96e 100644 --- a/gfx/drivers_context/osmesa_ctx.c +++ b/gfx/drivers_context/osmesa_ctx.c @@ -316,7 +316,8 @@ static void osmesa_ctx_update_window_title(void *data, video_frame_info_t video_ if (!osmesa) return; - video_monitor_get_fps(buf, sizeof(buf), buf_fps, sizeof(buf_fps)); + video_monitor_get_fps(video_info, buf, + sizeof(buf), buf_fps, sizeof(buf_fps)); if (video_info.fps_show) runloop_msg_queue_push(buf_fps, 1, 1, false); diff --git a/gfx/drivers_context/ps3_ctx.c b/gfx/drivers_context/ps3_ctx.c index d967dc8107..c4b9025cb1 100644 --- a/gfx/drivers_context/ps3_ctx.c +++ b/gfx/drivers_context/ps3_ctx.c @@ -207,7 +207,7 @@ static void gfx_ctx_ps3_update_window_title(void *data, video_frame_info_t video (void)data; - video_monitor_get_fps(buf, sizeof(buf), + video_monitor_get_fps(video_info, buf, sizeof(buf), buf_fps, sizeof(buf_fps)); if (video_info.fps_show) runloop_msg_queue_push(buf_fps, 1, 1, false); diff --git a/gfx/drivers_context/sdl_gl_ctx.c b/gfx/drivers_context/sdl_gl_ctx.c index 39181f8743..8197c7d4bb 100644 --- a/gfx/drivers_context/sdl_gl_ctx.c +++ b/gfx/drivers_context/sdl_gl_ctx.c @@ -274,7 +274,7 @@ static void sdl_ctx_update_window_title(void *data, video_frame_info_t video_inf buf[0] = buf_fps[0] = '\0'; - if (video_monitor_get_fps(buf, sizeof(buf), + if (video_monitor_get_fps(video_info, buf, sizeof(buf), buf_fps, sizeof(buf_fps))) { #ifdef HAVE_SDL2 diff --git a/gfx/drivers_context/vc_egl_ctx.c b/gfx/drivers_context/vc_egl_ctx.c index 45603bd6bf..51bdf0e9f6 100644 --- a/gfx/drivers_context/vc_egl_ctx.c +++ b/gfx/drivers_context/vc_egl_ctx.c @@ -112,7 +112,7 @@ static void gfx_ctx_vc_update_window_title(void *data, video_frame_info_t video_ buf[0] = buf_fps[0] = '\0'; - video_monitor_get_fps(buf, sizeof(buf), + video_monitor_get_fps(video_info, buf, sizeof(buf), buf_fps, sizeof(buf_fps)); if (video_info.fps_show) runloop_msg_queue_push(buf_fps, 1, 1, false); diff --git a/gfx/drivers_context/vivante_fbdev_ctx.c b/gfx/drivers_context/vivante_fbdev_ctx.c index 17abc79b05..0c4f7ff230 100644 --- a/gfx/drivers_context/vivante_fbdev_ctx.c +++ b/gfx/drivers_context/vivante_fbdev_ctx.c @@ -152,7 +152,7 @@ static void gfx_ctx_vivante_update_window_title(void *data, video_frame_info_t v buf[0] = buf_fps[0] = '\0'; - video_monitor_get_fps(buf, sizeof(buf), + video_monitor_get_fps(video_info, buf, sizeof(buf), buf_fps, sizeof(buf_fps)); if (video_info.fps_show) runloop_msg_queue_push(buf_fps, 1, 1, false); diff --git a/gfx/drivers_context/wayland_ctx.c b/gfx/drivers_context/wayland_ctx.c index ab30e3ba45..cea36b8685 100644 --- a/gfx/drivers_context/wayland_ctx.c +++ b/gfx/drivers_context/wayland_ctx.c @@ -728,7 +728,7 @@ static void gfx_ctx_wl_update_window_title(void *data, video_frame_info_t video_ buf[0] = buf_fps[0] = '\0'; - if (video_monitor_get_fps(buf, sizeof(buf), + if (video_monitor_get_fps(video_info, buf, sizeof(buf), buf_fps, sizeof(buf_fps))) wl_shell_surface_set_title(wl->shell_surf, buf); diff --git a/gfx/drivers_context/wgl_ctx.cpp b/gfx/drivers_context/wgl_ctx.cpp index 15766f0733..6075f9cafc 100644 --- a/gfx/drivers_context/wgl_ctx.cpp +++ b/gfx/drivers_context/wgl_ctx.cpp @@ -393,7 +393,7 @@ static void gfx_ctx_wgl_update_window_title(void *data, video_frame_info_t video buf[0] = buf_fps[0] = '\0'; - if (window && video_monitor_get_fps(buf, sizeof(buf), + if (window && video_monitor_get_fps(video_info, buf, sizeof(buf), buf_fps, sizeof(buf_fps))) window->set_title(&main_window, buf); if (video_info.fps_show) diff --git a/gfx/video_driver.c b/gfx/video_driver.c index 2b77282e71..470475e72d 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -1023,7 +1023,9 @@ bool video_monitor_fps_statistics(double *refresh_rate, * otherwise false. * **/ -bool video_monitor_get_fps(char *buf, size_t size, +bool video_monitor_get_fps( + video_frame_info_t video_info, + char *buf, size_t size, char *buf_fps, size_t size_fps) { static retro_time_t curr_time; @@ -1036,7 +1038,6 @@ bool video_monitor_get_fps(char *buf, size_t size, { static float last_fps; bool ret = false; - settings_t *settings = config_get_ptr(); unsigned write_index = video_driver_frame_time_count++ & (MEASURE_FRAME_TIME_SAMPLES_COUNT - 1); @@ -1055,7 +1056,7 @@ bool video_monitor_get_fps(char *buf, size_t size, " || ", size); - if (settings->fps_show) + if (video_info.fps_show) { char fps_text[64]; snprintf(fps_text, sizeof(fps_text), " FPS: %6.1f || ", last_fps); @@ -1071,7 +1072,7 @@ bool video_monitor_get_fps(char *buf, size_t size, ret = true; } - if (buf_fps && settings->fps_show) + if (buf_fps && video_info.fps_show) snprintf(buf_fps, size_fps, "FPS: %6.1f || %s: " STRING_REP_UINT64, last_fps, msg_hash_to_str(MSG_FRAMES), @@ -1098,7 +1099,8 @@ void video_driver_set_aspect_ratio_value(float value) video_driver_aspect_ratio = value; } -static bool video_driver_frame_filter(const void *data, +static bool video_driver_frame_filter( + const void *data, unsigned width, unsigned height, size_t pitch, unsigned *output_width, unsigned *output_height, diff --git a/gfx/video_driver.h b/gfx/video_driver.h index febf512bd7..16b9b0224f 100644 --- a/gfx/video_driver.h +++ b/gfx/video_driver.h @@ -465,7 +465,9 @@ bool video_monitor_fps_statistics(double *refresh_rate, * otherwise false. * **/ -bool video_monitor_get_fps(char *buf, size_t size, +bool video_monitor_get_fps( + video_frame_info_t video_info, + char *buf, size_t size, char *buf_fps, size_t size_fps); unsigned video_pixel_get_alignment(unsigned pitch);