From 7ad717cb5cb355e8e84a8bd83120ddc324d62c92 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 18 Jan 2017 13:53:29 +0100 Subject: [PATCH] Revert "Update diff2.diff" This reverts commit 6f95f48edec867d667c52a8b94f487edef042278. --- diff2.diff | 2380 +--------------------------------------------------- 1 file changed, 1 insertion(+), 2379 deletions(-) diff --git a/diff2.diff b/diff2.diff index 991ecf9bc4..14d68a640b 100644 --- a/diff2.diff +++ b/diff2.diff @@ -1,2372 +1,3 @@ -diff --git a/diff2.diff b/diff2.diff -index 14d68a640..e69de29bb 100644 ---- a/diff2.diff -+++ b/diff2.diff -@@ -1,2364 +0,0 @@ --diff --git a/gfx/common/x11_common.c b/gfx/common/x11_common.c --index fb5e5d25b..a79c6037f 100644 ----- a/gfx/common/x11_common.c --+++ b/gfx/common/x11_common.c --@@ -323,7 +323,7 @@ void x11_suspend_screensaver(Window wnd, bool enable) -- x11_suspend_screensaver_xdg_screensaver(wnd, enable); -- } -- ---static bool get_video_mode(video_frame_info_t video_info, --+static bool get_video_mode(video_frame_info_t *video_info, -- Display *dpy, unsigned width, unsigned height, -- XF86VidModeModeInfo *mode, XF86VidModeModeInfo *desktop_mode) -- { --@@ -345,7 +345,7 @@ static bool get_video_mode(video_frame_info_t video_info, -- -- /* If we use black frame insertion, we fake a 60 Hz monitor -- * for 120 Hz one, etc, so try to match that. */ --- refresh_mod = video_info.black_frame_insertion ? 0.5f : 1.0f; --+ refresh_mod = video_info->black_frame_insertion ? 0.5f : 1.0f; -- -- for (i = 0; i < num_modes; i++) -- { --@@ -361,7 +361,7 @@ static bool get_video_mode(video_frame_info_t video_info, -- continue; -- -- refresh = refresh_mod * m->dotclock * 1000.0f / (m->htotal * m->vtotal); --- diff = fabsf(refresh - video_info.refresh_rate); --+ diff = fabsf(refresh - video_info->refresh_rate); -- -- if (!ret || diff < minimum_fps_diff) -- { --@@ -375,7 +375,7 @@ static bool get_video_mode(video_frame_info_t video_info, -- return ret; -- } -- ---bool x11_enter_fullscreen(video_frame_info_t video_info, --+bool x11_enter_fullscreen(video_frame_info_t *video_info, -- Display *dpy, unsigned width, -- unsigned height, XF86VidModeModeInfo *desktop_mode) -- { --@@ -715,18 +715,10 @@ bool x11_connect(void) -- return true; -- } -- ---void x11_update_window_title(void *data, video_frame_info_t video_info) --+void x11_update_title(void *data, video_frame_info_t *video_info) -- { --- char buf[128]; --- char buf_fps[128]; --- --- buf[0] = buf_fps[0] = '\0'; --- --- 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); --+ if (video_info->monitor_fps_enable) --+ XStoreName(g_x11_dpy, g_x11_win, video_info->window_text); -- } -- -- bool x11_input_ctx_new(bool true_full) --diff --git a/gfx/common/x11_common.h b/gfx/common/x11_common.h --index b08db07e0..c4ffec01d 100644 ----- a/gfx/common/x11_common.h --+++ b/gfx/common/x11_common.h --@@ -45,7 +45,7 @@ void x11_save_last_used_monitor(Window win); -- void x11_show_mouse(Display *dpy, Window win, bool state); -- void x11_windowed_fullscreen(Display *dpy, Window win); -- void x11_suspend_screensaver(Window win, bool enable); ---bool x11_enter_fullscreen(video_frame_info_t video_info, --+bool x11_enter_fullscreen(video_frame_info_t *video_info, -- Display *dpy, unsigned width, -- unsigned height, XF86VidModeModeInfo *desktop_mode); -- --@@ -84,7 +84,7 @@ bool x11_alive(void *data); -- -- bool x11_connect(void); -- ---void x11_update_window_title(void *data, video_frame_info_t video_info); --+void x11_update_title(void *data, video_frame_info_t *video_info); -- -- bool x11_input_ctx_new(bool true_full); -- --diff --git a/gfx/drivers/caca_gfx.c b/gfx/drivers/caca_gfx.c --index c56ca64b5..b55eb5bd4 100644 ----- a/gfx/drivers/caca_gfx.c --+++ b/gfx/drivers/caca_gfx.c --@@ -94,7 +94,7 @@ static void *caca_gfx_init(const video_info_t *video, -- -- static bool caca_gfx_frame(void *data, const void *frame, -- unsigned frame_width, unsigned frame_height, uint64_t frame_count, --- unsigned pitch, const char *msg, video_frame_info_t video_info) --+ unsigned pitch, const char *msg, video_frame_info_t *video_info) -- { -- size_t len = 0; -- void *buffer = NULL; --diff --git a/gfx/drivers/ctr_gfx.c b/gfx/drivers/ctr_gfx.c --index 44f36f98f..67afa4e36 100644 ----- a/gfx/drivers/ctr_gfx.c --+++ b/gfx/drivers/ctr_gfx.c --@@ -446,7 +446,7 @@ static void* ctr_init(const video_info_t* video, -- static bool ctr_frame(void* data, const void* frame, -- unsigned width, unsigned height, -- uint64_t frame_count, --- unsigned pitch, const char* msg, video_frame_info_t info) --+ unsigned pitch, const char* msg, video_frame_info_t *video_info) -- { -- uint32_t diff; -- static uint64_t currentTick,lastTick; --diff --git a/gfx/drivers/d3d.cpp b/gfx/drivers/d3d.cpp --index 46e706e67..abf51ba80 100644 ----- a/gfx/drivers/d3d.cpp --+++ b/gfx/drivers/d3d.cpp --@@ -1368,7 +1368,7 @@ static void d3d_get_overlay_interface(void *data, -- static bool d3d_frame(void *data, const void *frame, -- unsigned frame_width, unsigned frame_height, -- uint64_t frame_count, unsigned pitch, --- const char *msg, video_frame_info_t video_info) --+ const char *msg, video_frame_info_t *video_info) -- { -- unsigned width, height; -- static struct retro_perf_counter d3d_frame = {0}; --@@ -1412,18 +1412,18 @@ static bool d3d_frame(void *data, const void *frame, -- /* render_chain() only clears out viewport, -- * clear out everything. */ -- D3DVIEWPORT screen_vp; --- screen_vp.X = 0; --- screen_vp.Y = 0; --- screen_vp.MinZ = 0; --- screen_vp.MaxZ = 1; --- screen_vp.Width = width; --+ screen_vp.X = 0; --+ screen_vp.Y = 0; --+ screen_vp.MinZ = 0; --+ screen_vp.MaxZ = 1; --+ screen_vp.Width = width; -- screen_vp.Height = height; -- d3d_set_viewports(d3d->dev, &screen_vp); -- d3d_clear(d3d->dev, 0, 0, D3DCLEAR_TARGET, 0, 1, 0); -- -- /* Insert black frame first, so we -- * can screenshot, etc. */ --- if (video_info.black_frame_insertion) --+ if (video_info->black_frame_insertion) -- { -- if (!d3d_swap(d3d, d3d->dev) || d3d->needs_restore) -- return true; --diff --git a/gfx/drivers/dispmanx_gfx.c b/gfx/drivers/dispmanx_gfx.c --index 873eced47..1c27cd26f 100644 ----- a/gfx/drivers/dispmanx_gfx.c --+++ b/gfx/drivers/dispmanx_gfx.c --@@ -430,7 +430,7 @@ static void *dispmanx_gfx_init(const video_info_t *video, -- -- static bool dispmanx_gfx_frame(void *data, const void *frame, unsigned width, -- unsigned height, uint64_t frame_count, unsigned pitch, const char *msg, --- video_frame_info_t video_info) --+ video_frame_info_t *video_info) -- { -- struct dispmanx_video *_dispvars = data; -- float aspect = video_driver_get_aspect_ratio(); --@@ -438,7 +438,9 @@ static bool dispmanx_gfx_frame(void *data, const void *frame, unsigned width, -- if (!frame) -- return true; -- --- if (width != _dispvars->core_width || height != _dispvars->core_height || _dispvars->aspect_ratio != aspect) --+ if ( (width != _dispvars->core_width) || --+ (height != _dispvars->core_height) || --+ (_dispvars->aspect_ratio != aspect)) -- { -- /* Sanity check. */ -- if (width == 0 || height == 0) --@@ -467,18 +469,11 @@ static bool dispmanx_gfx_frame(void *data, const void *frame, unsigned width, -- settings->video.max_swapchain_images, -- 0, -- &_dispvars->main_surface); --- --+ -- /* We need to recreate the menu surface too, if it exists already, so we -- * free it and let dispmanx_set_texture_frame() recreate it as it detects it's NULL.*/ --- if (_dispvars->menu_active && _dispvars->menu_surface) { --+ if (_dispvars->menu_active && _dispvars->menu_surface) -- dispmanx_surface_free(_dispvars, &_dispvars->menu_surface); --- } --- } --- --- if (video_info.fps_show) --- { --- char buf[128]; --- 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/drm_gfx.c b/gfx/drivers/drm_gfx.c --index 9e2146313..62c22f8b5 100644 ----- a/gfx/drivers/drm_gfx.c --+++ b/gfx/drivers/drm_gfx.c --@@ -744,11 +744,12 @@ static void *drm_gfx_init(const video_info_t *video, -- -- static bool drm_gfx_frame(void *data, const void *frame, unsigned width, -- unsigned height, uint64_t frame_count, unsigned pitch, const char *msg, --- video_frame_info_t video_info) --+ video_frame_info_t *video_info) -- { -- struct drm_video *_drmvars = data; -- --- if (width != _drmvars->core_width || height != _drmvars->core_height) --+ if ( ( width != _drmvars->core_width) || --+ (height != _drmvars->core_height)) -- { -- /* Sanity check. */ -- if (width == 0 || height == 0) --@@ -778,14 +779,6 @@ static bool drm_gfx_frame(void *data, const void *frame, unsigned width, -- drm_plane_setup(_drmvars->main_surface); -- } -- --- if (_drmvars->menu_active) --- { --- char buf[128]; --- buf[0] = '\0'; --- --- video_monitor_get_fps(video_info, buf, sizeof(buf), NULL, 0); --- } --- -- /* Update main surface: locate free page, blit and flip. */ -- drm_surface_update(_drmvars, frame, _drmvars->main_surface); -- return true; --diff --git a/gfx/drivers/exynos_gfx.c b/gfx/drivers/exynos_gfx.c --index 68f5132eb..00f0fae39 100644 ----- a/gfx/drivers/exynos_gfx.c --+++ b/gfx/drivers/exynos_gfx.c --@@ -1159,7 +1159,6 @@ static int exynos_render_msg(struct exynos_video *vid, -- return exynos_blend_font(pdata); -- } -- --- -- static void *exynos_gfx_init(const video_info_t *video, -- const input_driver_t **input, void **input_data) -- { --@@ -1273,7 +1272,7 @@ static void exynos_gfx_free(void *data) -- -- static bool exynos_gfx_frame(void *data, const void *frame, unsigned width, -- unsigned height, uint64_t frame_count, unsigned pitch, const char *msg, --- video_frame_info_t video_info) --+ video_frame_info_t *video_info) -- { -- struct exynos_video *vid = data; -- struct exynos_page *page = NULL; --@@ -1304,18 +1303,6 @@ static bool exynos_gfx_frame(void *data, const void *frame, unsigned width, -- goto fail; -- } -- --- if (video_info.fps_show) --- { --- char buffer[128]; --- char buffer_fps[128]; --- --- buffer[0] = buffer_fps[0] = '\0'; --- --- 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); --- } --- -- /* If at this point the dimension parameters are still zero, setup some * -- * fake blit parameters so that menu and font rendering work properly. */ -- if (vid->width == 0 || vid->height == 0) --diff --git a/gfx/drivers/gdi_gfx.c b/gfx/drivers/gdi_gfx.c --index 05f9e0050..b0aecc292 100644 ----- a/gfx/drivers/gdi_gfx.c --+++ b/gfx/drivers/gdi_gfx.c --@@ -146,7 +146,7 @@ error: -- -- static bool gdi_gfx_frame(void *data, const void *frame, -- unsigned frame_width, unsigned frame_height, uint64_t frame_count, --- unsigned pitch, const char *msg, video_frame_info_t video_info) --+ unsigned pitch, const char *msg, video_frame_info_t *video_info) -- { -- gfx_ctx_mode_t mode; -- RECT rect; --diff --git a/gfx/drivers/gl.c b/gfx/drivers/gl.c --index 5c42dcce3..09c0bd7dc 100644 ----- a/gfx/drivers/gl.c --+++ b/gfx/drivers/gl.c --@@ -299,11 +299,11 @@ static void gl_set_viewport_wrapper(void *data, unsigned viewport_width, -- -- video_driver_build_info(&video_info); -- --- gl_set_viewport(data, video_info, --+ gl_set_viewport(data, &video_info, -- viewport_width, viewport_height, force_full, allow_rotate); -- } -- ---void gl_set_viewport(void *data, video_frame_info_t video_info, --+void gl_set_viewport(void *data, video_frame_info_t *video_info, -- unsigned viewport_width, -- unsigned viewport_height, -- bool force_full, bool allow_rotate) --@@ -324,7 +324,7 @@ void gl_set_viewport(void *data, video_frame_info_t video_info, -- -- video_context_driver_translate_aspect(&aspect_data); -- --- if (video_info.scale_integer && !force_full) --+ if (video_info->scale_integer && !force_full) -- { -- video_viewport_get_scaled_integer(&gl->vp, -- viewport_width, viewport_height, --@@ -337,7 +337,7 @@ void gl_set_viewport(void *data, video_frame_info_t video_info, -- float desired_aspect = video_driver_get_aspect_ratio(); -- -- #if defined(HAVE_MENU) --- if (video_info.aspect_ratio_idx == ASPECT_RATIO_CUSTOM) --+ if (video_info->aspect_ratio_idx == ASPECT_RATIO_CUSTOM) -- { -- const struct video_viewport *custom = video_viewport_get_custom(); -- --@@ -1090,7 +1090,7 @@ static bool gl_frame(void *data, const void *frame, -- unsigned frame_width, unsigned frame_height, -- uint64_t frame_count, -- unsigned pitch, const char *msg, --- video_frame_info_t video_info) --+ video_frame_info_t *video_info) -- { -- video_shader_ctx_mvp_t mvp; -- video_shader_ctx_coords_t coords; --@@ -1339,7 +1339,7 @@ static bool gl_frame(void *data, const void *frame, -- /* Disable BFI during fast forward, slow-motion, -- * and pause to prevent flicker. */ -- if ( --- video_info.black_frame_insertion --+ video_info->black_frame_insertion -- && !input_driver_is_nonblock_state() -- && !runloop_ctl(RUNLOOP_CTL_IS_SLOWMOTION, NULL) -- && !runloop_ctl(RUNLOOP_CTL_IS_PAUSED, NULL)) --@@ -1351,7 +1351,7 @@ static bool gl_frame(void *data, const void *frame, -- video_context_driver_swap_buffers(video_info); -- -- #ifdef HAVE_GL_SYNC --- if (video_info.hard_sync && gl->have_sync) --+ if (video_info->hard_sync && gl->have_sync) -- { -- static struct retro_perf_counter gl_fence = {0}; -- --@@ -1361,7 +1361,7 @@ static bool gl_frame(void *data, const void *frame, -- gl->fences[gl->fence_count++] = -- glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0); -- --- while (gl->fence_count > video_info.hard_sync_frames) --+ while (gl->fence_count > video_info->hard_sync_frames) -- { -- glClientWaitSync(gl->fences[0], -- GL_SYNC_FLUSH_COMMANDS_BIT, 1000000000); --diff --git a/gfx/drivers/gl_renderchains/render_chain_gl.h b/gfx/drivers/gl_renderchains/render_chain_gl.h --index 24886dec0..c329b83fb 100644 ----- a/gfx/drivers/gl_renderchains/render_chain_gl.h --+++ b/gfx/drivers/gl_renderchains/render_chain_gl.h --@@ -49,14 +49,14 @@ void gl_load_texture_data( -- const void *frame, unsigned base_size); -- -- void gl_renderchain_render(gl_t *gl, --- video_frame_info_t video_info, --+ video_frame_info_t *video_info, -- uint64_t frame_count, -- const struct video_tex_info *tex_info, -- const struct video_tex_info *feedback_info); -- -- void gl_renderchain_init(gl_t *gl, unsigned fbo_width, unsigned fbo_height); -- ---void gl_set_viewport(void *data, video_frame_info_t video_info, --+void gl_set_viewport(void *data, video_frame_info_t *video_info, -- unsigned viewport_width, -- unsigned viewport_height, bool force_full, bool allow_rotate); -- --@@ -70,7 +70,7 @@ void gl_renderchain_recompute_pass_sizes(gl_t *gl, -- unsigned width, unsigned height, -- unsigned vp_width, unsigned vp_height); -- ---void gl_renderchain_start_render(gl_t *gl, video_frame_info_t video_info); --+void gl_renderchain_start_render(gl_t *gl, video_frame_info_t *video_info); -- -- void gl_check_fbo_dimensions(gl_t *gl); -- --diff --git a/gfx/drivers/gl_renderchains/render_chain_gl_legacy.c b/gfx/drivers/gl_renderchains/render_chain_gl_legacy.c --index 55d687d81..8cc168118 100644 ----- a/gfx/drivers/gl_renderchains/render_chain_gl_legacy.c --+++ b/gfx/drivers/gl_renderchains/render_chain_gl_legacy.c --@@ -239,7 +239,7 @@ void gl_check_fbo_dimensions(gl_t *gl) -- } -- } -- void gl_renderchain_render(gl_t *gl, --- video_frame_info_t video_info, --+ video_frame_info_t *video_info, -- uint64_t frame_count, -- const struct video_tex_info *tex_info, -- const struct video_tex_info *feedback_info) --@@ -667,7 +667,7 @@ void gl_renderchain_recompute_pass_sizes(gl_t *gl, -- } -- } -- ---void gl_renderchain_start_render(gl_t *gl, video_frame_info_t video_info) --+void gl_renderchain_start_render(gl_t *gl, video_frame_info_t *video_info) -- { -- glBindTexture(GL_TEXTURE_2D, gl->texture[gl->tex_index]); -- glBindFramebuffer(RARCH_GL_FRAMEBUFFER, gl->fbo[0]); --diff --git a/gfx/drivers/gx_gfx.c b/gfx/drivers/gx_gfx.c --index d2ed4cb64..9b9439cf5 100644 ----- a/gfx/drivers/gx_gfx.c --+++ b/gfx/drivers/gx_gfx.c --@@ -1438,7 +1438,7 @@ static bool gx_frame(void *data, const void *frame, -- unsigned width, unsigned height, -- uint64_t frame_count, unsigned pitch, -- const char *msg, --- video_frame_info_t video_info) --+ video_frame_info_t *video_info) -- { -- char fps_txt[128]; -- char fps_text_buf[128]; --@@ -1538,10 +1538,7 @@ static bool gx_frame(void *data, const void *frame, -- -- GX_DrawDone(); -- --- video_monitor_get_fps(video_info, fps_txt, sizeof(fps_txt), --- fps_text_buf, sizeof(fps_text_buf)); --- --- if (video_info.fps_show) --+ if (video_info->fps_show) -- { -- char mem1_txt[128]; -- char mem2_txt[128]; --diff --git a/gfx/drivers/nullgfx.c b/gfx/drivers/nullgfx.c --index 2a9adebf5..30708f4df 100644 ----- a/gfx/drivers/nullgfx.c --+++ b/gfx/drivers/nullgfx.c --@@ -32,7 +32,7 @@ static void *null_gfx_init(const video_info_t *video, -- -- static bool null_gfx_frame(void *data, const void *frame, -- unsigned width, unsigned height, uint64_t frame_count, --- unsigned pitch, const char *msg, video_frame_info_t video_info) --+ unsigned pitch, const char *msg, video_frame_info_t *video_info) -- { -- (void)data; -- (void)frame; --diff --git a/gfx/drivers/omap_gfx.c b/gfx/drivers/omap_gfx.c --index af46ff768..1344865ea 100644 ----- a/gfx/drivers/omap_gfx.c --+++ b/gfx/drivers/omap_gfx.c --@@ -985,7 +985,7 @@ fail: -- -- static bool omap_gfx_frame(void *data, const void *frame, unsigned width, -- unsigned height, uint64_t frame_count, unsigned pitch, const char *msg, --- video_frame_info_t video_info) --+ video_frame_info_t *video_info) -- { -- omap_video_t *vid = (omap_video_t*)data; -- --diff --git a/gfx/drivers/psp1_gfx.c b/gfx/drivers/psp1_gfx.c --index 47887c0d0..2fbd141fc 100644 ----- a/gfx/drivers/psp1_gfx.c --+++ b/gfx/drivers/psp1_gfx.c --@@ -467,7 +467,7 @@ static void *psp_init(const video_info_t *video, -- -- static bool psp_frame(void *data, const void *frame, -- unsigned width, unsigned height, uint64_t frame_count, --- unsigned pitch, const char *msg, video_frame_info_t video_info) --+ unsigned pitch, const char *msg, video_frame_info_t *video_info) -- { -- #ifdef DISPLAY_FPS -- uint32_t diff; --@@ -476,8 +476,6 @@ static bool psp_frame(void *data, const void *frame, -- static float fps = 0.0; -- #endif -- static struct retro_perf_counter psp_frame_run = {0}; --- static char fps_txt[128] = {0}; --- static char fps_text_buf[128] = {0}; -- psp1_video_t *psp = (psp1_video_t*)data; -- -- if (!width || !height) --@@ -495,14 +493,10 @@ static bool psp_frame(void *data, const void *frame, -- -- pspDebugScreenSetXY(0,0); -- --- 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); --- --- if (video_info.fps_show) --+ if (video_info->fps_show) -- { --- pspDebugScreenSetXY(68 - strlen(fps_text_buf) - 1,0); --- pspDebugScreenPuts(fps_text_buf); --+ pspDebugScreenSetXY(68 - strlen(video_info->fps_text) - 1,0); --+ pspDebugScreenPuts(video_info->fps_text); -- pspDebugScreenSetXY(0,1); -- } -- --diff --git a/gfx/drivers/sdl2_gfx.c b/gfx/drivers/sdl2_gfx.c --index 6d216d898..438abdeb4 100644 ----- a/gfx/drivers/sdl2_gfx.c --+++ b/gfx/drivers/sdl2_gfx.c --@@ -498,13 +498,10 @@ static void check_window(sdl2_video_t *vid) -- -- static bool sdl2_gfx_frame(void *data, const void *frame, unsigned width, -- unsigned height, uint64_t frame_count, --- unsigned pitch, const char *msg, video_frame_info_t video_info) --+ unsigned pitch, const char *msg, video_frame_info_t *video_info) -- { --- char buf[128]; -- sdl2_video_t *vid = (sdl2_video_t*)data; -- --- buf[0] = '\0'; --- -- if (vid->should_resize) -- sdl_refresh_viewport(vid); -- --@@ -536,8 +533,8 @@ static bool sdl2_gfx_frame(void *data, const void *frame, unsigned width, -- -- SDL_RenderPresent(vid->renderer); -- --- if (video_monitor_get_fps(video_info, buf, sizeof(buf), NULL, 0)) --- SDL_SetWindowTitle(vid->window, buf); --+ if (video_info->monitor_fps_enable) --+ SDL_SetWindowTitle(vid->window, video_info->window_text); -- -- return true; -- } --diff --git a/gfx/drivers/sdl_gfx.c b/gfx/drivers/sdl_gfx.c --index 45bdf8f1d..787c8d8c5 100644 ----- a/gfx/drivers/sdl_gfx.c --+++ b/gfx/drivers/sdl_gfx.c --@@ -331,17 +331,14 @@ static void sdl_gfx_check_window(sdl_video_t *vid) -- -- static bool sdl_gfx_frame(void *data, const void *frame, unsigned width, -- unsigned height, uint64_t frame_count, --- unsigned pitch, const char *msg, video_frame_info_t video_info) --+ unsigned pitch, const char *msg, video_frame_info_t *video_info) -- { --- char buf[128]; -- static struct retro_perf_counter sdl_scale = {0}; -- sdl_video_t *vid = (sdl_video_t*)data; -- -- if (!frame) -- return true; -- --- buf[0] = '\0'; --- -- if (SDL_MUSTLOCK(vid->screen)) -- SDL_LockSurface(vid->screen); -- --@@ -370,8 +367,8 @@ 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(video_info, buf, sizeof(buf), NULL, 0)) --- SDL_WM_SetCaption(buf, NULL); --+ if (video_info->monitor_fps_enable) --+ SDL_WM_SetCaption(video_info->window_text, NULL); -- -- SDL_Flip(vid->screen); -- --diff --git a/gfx/drivers/sunxi_gfx.c b/gfx/drivers/sunxi_gfx.c --index da03c2333..c01cb7919 100644 ----- a/gfx/drivers/sunxi_gfx.c --+++ b/gfx/drivers/sunxi_gfx.c --@@ -763,7 +763,7 @@ static void sunxi_setup_scale (void *data, -- -- static bool sunxi_gfx_frame(void *data, const void *frame, unsigned width, -- unsigned height, uint64_t frame_count, unsigned pitch, const char *msg, --- video_frame_info_t video_info) --+ video_frame_info_t *video_info) -- { -- struct sunxi_video *_dispvars = (struct sunxi_video*)data; -- --@@ -781,11 +781,6 @@ static bool sunxi_gfx_frame(void *data, const void *frame, unsigned width, -- -- if (_dispvars->menu_active) -- { --- char buf[128]; --- --- 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/vg.c b/gfx/drivers/vg.c --index 91451518d..7791b9b5e 100644 ----- a/gfx/drivers/vg.c --+++ b/gfx/drivers/vg.c --@@ -378,7 +378,7 @@ static void vg_copy_frame(void *data, const void *frame, -- static bool vg_frame(void *data, const void *frame, -- unsigned frame_width, unsigned frame_height, -- uint64_t frame_count, unsigned pitch, const char *msg, --- video_frame_info_t video_info) --+ video_frame_info_t *video_info) -- { -- unsigned width, height; -- vg_t *vg = (vg_t*)data; --diff --git a/gfx/drivers/vita2d_gfx.c b/gfx/drivers/vita2d_gfx.c --index 6d01afac3..bf784591e 100644 ----- a/gfx/drivers/vita2d_gfx.c --+++ b/gfx/drivers/vita2d_gfx.c --@@ -133,54 +133,55 @@ static void vita2d_gfx_update_viewport(vita_video_t* vita); -- -- static bool vita2d_gfx_frame(void *data, const void *frame, -- unsigned width, unsigned height, uint64_t frame_count, --- unsigned pitch, const char *msg, video_frame_info_t video_info) --+ unsigned pitch, const char *msg, video_frame_info_t *video_info) -- { -- void *tex_p; -- vita_video_t *vita = (vita_video_t *)data; --- --+ -- if (frame) -- { --- if(!(vita->texture&&vita2d_texture_get_datap(vita->texture)==frame)){ --- unsigned i; --- unsigned int stride; --- --- if ((width != vita->width || height != vita->height) && vita->texture) --- { --- vita2d_free_texture(vita->texture); --- vita->texture = NULL; --- } --- --- if (!vita->texture) --- { --- RARCH_LOG("Creating texture: %ix%i\n", width, height); --- vita->width = width; --- vita->height = height; --- vita->texture = vita2d_create_empty_texture_format(width, height, vita->format); --- vita2d_texture_set_filters(vita->texture,vita->tex_filter,vita->tex_filter); --- } --- tex_p = vita2d_texture_get_datap(vita->texture); --- stride = vita2d_texture_get_stride(vita->texture); --- --- if (vita->format == SCE_GXM_TEXTURE_FORMAT_X8U8U8U8_1RGB) --- { --- stride /= 4; --- pitch /= 4; --- uint32_t *tex32 = tex_p; --- const uint32_t *frame32 = frame; --- --- for (i = 0; i < height; i++) --- memcpy_neon(&tex32[i*stride],&frame32[i*pitch],pitch*sizeof(uint32_t)); --- } --- else --- { --- stride /= 2; --- pitch /= 2; --- uint16_t *tex16 = tex_p; --- const uint16_t *frame16 = frame; --- --- for (i = 0; i < height; i++) --- memcpy_neon(&tex16[i*stride],&frame16[i*pitch],width*sizeof(uint16_t)); --- } --+ if(!(vita->texture&&vita2d_texture_get_datap(vita->texture)==frame)) --+ { --+ unsigned i; --+ unsigned int stride; --+ --+ if ((width != vita->width || height != vita->height) && vita->texture) --+ { --+ vita2d_free_texture(vita->texture); --+ vita->texture = NULL; --+ } --+ --+ if (!vita->texture) --+ { --+ RARCH_LOG("Creating texture: %ix%i\n", width, height); --+ vita->width = width; --+ vita->height = height; --+ vita->texture = vita2d_create_empty_texture_format(width, height, vita->format); --+ vita2d_texture_set_filters(vita->texture,vita->tex_filter,vita->tex_filter); --+ } --+ tex_p = vita2d_texture_get_datap(vita->texture); --+ stride = vita2d_texture_get_stride(vita->texture); --+ --+ if (vita->format == SCE_GXM_TEXTURE_FORMAT_X8U8U8U8_1RGB) --+ { --+ stride /= 4; --+ pitch /= 4; --+ uint32_t *tex32 = tex_p; --+ const uint32_t *frame32 = frame; --+ --+ for (i = 0; i < height; i++) --+ memcpy_neon(&tex32[i*stride],&frame32[i*pitch],pitch*sizeof(uint32_t)); --+ } --+ else --+ { --+ stride /= 2; --+ pitch /= 2; --+ uint16_t *tex16 = tex_p; --+ const uint16_t *frame16 = frame; --+ --+ for (i = 0; i < height; i++) --+ memcpy_neon(&tex16[i*stride],&frame16[i*pitch],width*sizeof(uint16_t)); --+ } -- } -- } -- --@@ -188,9 +189,9 @@ static bool vita2d_gfx_frame(void *data, const void *frame, -- vita2d_gfx_update_viewport(vita); -- -- vita2d_start_drawing(); --- --+ -- vita2d_draw_rectangle(0,0,PSP_FB_WIDTH,PSP_FB_HEIGHT,vita2d_get_clear_color()); --- --+ -- if (vita->texture) -- { -- if (vita->fullscreen) --@@ -205,21 +206,9 @@ static bool vita2d_gfx_frame(void *data, const void *frame, -- float scalex = vita->vp.width / (float)vita->width; -- float scaley = vita->vp.height / (float)vita->height; -- vita2d_draw_texture_scale_rotate(vita->texture,vita->vp.x, --- vita->vp.y, scalex, scaley, rad); --+ vita->vp.y, scalex, scaley, rad); -- } -- } --- --- if (video_info.fps_show) --- { --- char buffer[128]; --- char buffer_fps[128]; --- --- buffer[0] = buffer_fps[0] = '\0'; --- --- 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); --- } -- -- #ifdef HAVE_OVERLAY -- if (vita->overlay_enable) --@@ -228,43 +217,39 @@ static bool vita2d_gfx_frame(void *data, const void *frame, -- -- if (vita->menu.active) -- { --- menu_driver_ctl(RARCH_MENU_CTL_FRAME, NULL); --- --- if(vita->menu.texture){ --- if (vita->fullscreen) --- vita2d_draw_texture_scale(vita->menu.texture, --- 0, 0, --- PSP_FB_WIDTH / (float)vita->menu.width, --- PSP_FB_HEIGHT / (float)vita->menu.height); --- else --- { --- if (vita->menu.width > vita->menu.height) --- { --- float scale = PSP_FB_HEIGHT / (float)vita->menu.height; --- float w = vita->menu.width * scale; --- vita2d_draw_texture_scale(vita->menu.texture, --- PSP_FB_WIDTH / 2.0f - w/2.0f, 0.0f, --- scale, scale); --- } --- else --- { --- float scale = PSP_FB_WIDTH / (float)vita->menu.width; --- float h = vita->menu.height * scale; --- vita2d_draw_texture_scale(vita->menu.texture, --- 0.0f, PSP_FB_HEIGHT / 2.0f - h/2.0f, --- scale, scale); --- } --- } --- } --- --- --- --+ menu_driver_ctl(RARCH_MENU_CTL_FRAME, NULL); --+ --+ if(vita->menu.texture){ --+ if (vita->fullscreen) --+ vita2d_draw_texture_scale(vita->menu.texture, --+ 0, 0, --+ PSP_FB_WIDTH / (float)vita->menu.width, --+ PSP_FB_HEIGHT / (float)vita->menu.height); --+ else --+ { --+ if (vita->menu.width > vita->menu.height) --+ { --+ float scale = PSP_FB_HEIGHT / (float)vita->menu.height; --+ float w = vita->menu.width * scale; --+ vita2d_draw_texture_scale(vita->menu.texture, --+ PSP_FB_WIDTH / 2.0f - w/2.0f, 0.0f, --+ scale, scale); --+ } --+ else --+ { --+ float scale = PSP_FB_WIDTH / (float)vita->menu.width; --+ float h = vita->menu.height * scale; --+ vita2d_draw_texture_scale(vita->menu.texture, --+ 0.0f, PSP_FB_HEIGHT / 2.0f - h/2.0f, --+ scale, scale); --+ } --+ } --+ } -- } --- --- --+ -- if(!string_is_empty(msg)) --- font_driver_render_msg(NULL, msg, NULL); --- --+ font_driver_render_msg(NULL, msg, NULL); --+ -- vita2d_end_drawing(); -- vita2d_swap_buffers(); -- --diff --git a/gfx/drivers/vulkan.c b/gfx/drivers/vulkan.c --index 4f5cfd04c..a9c2e958a 100644 ----- a/gfx/drivers/vulkan.c --+++ b/gfx/drivers/vulkan.c --@@ -1463,7 +1463,7 @@ static void vulkan_readback(vk_t *vk) -- VK_PIPELINE_STAGE_HOST_BIT); -- } -- ---static void vulkan_inject_black_frame(vk_t *vk, video_frame_info_t video_info) --+static void vulkan_inject_black_frame(vk_t *vk, video_frame_info_t *video_info) -- { -- VkCommandBufferBeginInfo begin_info = { -- VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO }; --@@ -1520,7 +1520,7 @@ static void vulkan_inject_black_frame(vk_t *vk, video_frame_info_t video_info) -- static bool vulkan_frame(void *data, const void *frame, -- unsigned frame_width, unsigned frame_height, -- uint64_t frame_count, --- unsigned pitch, const char *msg, video_frame_info_t video_info) --+ unsigned pitch, const char *msg, video_frame_info_t *video_info) -- { -- struct vk_per_frame *chain; -- unsigned width, height; --@@ -1931,7 +1931,7 @@ static bool vulkan_frame(void *data, const void *frame, -- /* Disable BFI during fast forward, slow-motion, -- * and pause to prevent flicker. */ -- if ( --- video_info.black_frame_insertion --+ video_info->black_frame_insertion -- && !input_driver_is_nonblock_state() -- && !runloop_ctl(RUNLOOP_CTL_IS_SLOWMOTION, NULL) -- && !runloop_ctl(RUNLOOP_CTL_IS_PAUSED, NULL)) --diff --git a/gfx/drivers/wiiu_gfx.c b/gfx/drivers/wiiu_gfx.c --index 2055b2d7f..928993e1e 100644 ----- a/gfx/drivers/wiiu_gfx.c --+++ b/gfx/drivers/wiiu_gfx.c --@@ -550,7 +550,7 @@ static void wiiu_gfx_free(void* data) -- -- static bool wiiu_gfx_frame(void* data, const void* frame, -- unsigned width, unsigned height, uint64_t frame_count, --- unsigned pitch, const char* msg, video_frame_info_t video_info) --+ unsigned pitch, const char* msg, video_frame_info_t *video_info) -- { -- (void)msg; -- int i; --diff --git a/gfx/drivers/xenon360_gfx.c b/gfx/drivers/xenon360_gfx.c --index eeb99f5c1..97efef122 100644 ----- a/gfx/drivers/xenon360_gfx.c --+++ b/gfx/drivers/xenon360_gfx.c --@@ -192,7 +192,7 @@ static void *xenon360_gfx_init(const video_info_t *video, const input_driver_t * -- } -- -- static bool xenon360_gfx_frame(void *data, const void *frame, unsigned width, unsigned height, --- uint64_t frame_count, unsigned pitch, const char *msg, video_frame_info_t video_info) --+ uint64_t frame_count, unsigned pitch, const char *msg, video_frame_info_t *video_info) -- { -- gl_t *vid = data; -- --diff --git a/gfx/drivers/xshm_gfx.c b/gfx/drivers/xshm_gfx.c --index 8bb8ec947..1a5704aee 100644 ----- a/gfx/drivers/xshm_gfx.c --+++ b/gfx/drivers/xshm_gfx.c --@@ -94,7 +94,7 @@ static void *xshm_gfx_init(const video_info_t *video, -- -- static bool xshm_gfx_frame(void *data, const void *frame, unsigned width, -- unsigned height, uint64_t frame_count, --- unsigned pitch, const char *msg, video_frame_info_t video_info) --+ unsigned pitch, const char *msg, video_frame_info_t *video_info) -- { -- xshm_t* xshm = (xshm_t*)data; -- int y; --diff --git a/gfx/drivers/xvideo.c b/gfx/drivers/xvideo.c --index d8fce331b..782771bda 100644 ----- a/gfx/drivers/xvideo.c --+++ b/gfx/drivers/xvideo.c --@@ -530,8 +530,8 @@ static void *xv_init(const video_info_t *video, -- -- video_driver_build_info(&video_info); -- --- if (video_monitor_get_fps(video_info, buf, sizeof(buf), NULL, 0)) --- XStoreName(g_x11_dpy, g_x11_win, buf); --+ if (video_info.monitor_fps_enable) --+ XStoreName(g_x11_dpy, g_x11_win, video_info.window_text); -- -- x11_set_window_attr(g_x11_dpy, g_x11_win); -- --@@ -784,7 +784,7 @@ static void xv_render_msg(xv_t *xv, const char *msg, -- -- static bool xv_frame(void *data, const void *frame, unsigned width, -- unsigned height, uint64_t frame_count, --- unsigned pitch, const char *msg, video_frame_info_t video_info) --+ unsigned pitch, const char *msg, video_frame_info_t *video_info) -- { -- XWindowAttributes target; -- xv_t *xv = (xv_t*)data; --@@ -811,7 +811,7 @@ static bool xv_frame(void *data, const void *frame, unsigned width, -- true); -- XSync(g_x11_dpy, False); -- --- x11_update_window_title(NULL, video_info); --+ x11_update_title(NULL, video_info); -- -- return true; -- } --diff --git a/gfx/drivers_context/android_ctx.c b/gfx/drivers_context/android_ctx.c --index ee672c8b9..805849557 100644 ----- a/gfx/drivers_context/android_ctx.c --+++ b/gfx/drivers_context/android_ctx.c --@@ -314,21 +314,12 @@ static bool android_gfx_ctx_set_resize(void *data, -- return false; -- } -- ---static void android_gfx_ctx_update_window_title(void *data, video_frame_info_t video_info) --+static void android_gfx_ctx_update_title(void *data, video_frame_info_t *video_info) -- { --- char buf[128]; --- char buf_fps[128]; --- --- buf[0] = buf_fps[0] = '\0'; --- --- 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); -- } -- -- static bool android_gfx_ctx_set_video_mode(void *data, --- video_frame_info_t video_info, --+ video_frame_info_t *video_info, -- unsigned width, unsigned height, -- bool fullscreen) -- { --@@ -493,7 +484,7 @@ dpi_fallback: -- return true; -- } -- ---static void android_gfx_ctx_swap_buffers(void *data, video_frame_info_t video_info) --+static void android_gfx_ctx_swap_buffers(void *data, video_frame_info_t *video_info) -- { -- android_ctx_data_t *and = (android_ctx_data_t*)data; -- --@@ -618,7 +609,7 @@ const gfx_ctx_driver_t gfx_ctx_android = { -- NULL, /* get_video_output_next */ -- android_gfx_ctx_get_metrics, -- NULL, --- android_gfx_ctx_update_window_title, --+ android_gfx_ctx_update_title, -- android_gfx_ctx_check_window, -- android_gfx_ctx_set_resize, -- android_gfx_ctx_has_focus, --diff --git a/gfx/drivers_context/cgl_ctx.c b/gfx/drivers_context/cgl_ctx.c --index b5412a189..6403d6ed3 100644 ----- a/gfx/drivers_context/cgl_ctx.c --+++ b/gfx/drivers_context/cgl_ctx.c --@@ -95,7 +95,7 @@ static void gfx_ctx_cgl_check_window(void *data, bool *quit, -- } -- } -- ---static void gfx_ctx_cgl_swap_buffers(void *data, video_frame_info_t video_info) --+static void gfx_ctx_cgl_swap_buffers(void *data, video_frame_info_t *video_info) -- { -- gfx_ctx_cgl_data_t *cgl = (gfx_ctx_cgl_data_t*)data; -- --@@ -110,22 +110,12 @@ static bool gfx_ctx_cgl_set_resize(void *data, unsigned width, unsigned height) -- return false; -- } -- ---static void gfx_ctx_cgl_update_window_title(void *data, video_frame_info_t video_info) --+static void gfx_ctx_cgl_update_title(void *data, video_frame_info_t *video_info) -- { --- char buf[128]; --- char buf_fps[128]; --- --- buf[0] = buf_fps[0] = '\0'; --- --- 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); -- } -- --- -- static bool gfx_ctx_cgl_set_video_mode(void *data, --- video_frame_info_t video_info, --+ video_frame_info_t *video_info, -- unsigned width, unsigned height, -- bool fullscreen) -- { --diff --git a/gfx/drivers_context/cocoa_gl_ctx.m b/gfx/drivers_context/cocoa_gl_ctx.m --index 566869809..487638385 100644 ----- a/gfx/drivers_context/cocoa_gl_ctx.m --+++ b/gfx/drivers_context/cocoa_gl_ctx.m --@@ -330,7 +330,7 @@ static void cocoagl_gfx_ctx_show_mouse(void *data, bool state) -- } -- -- static bool cocoagl_gfx_ctx_set_video_mode(void *data, --- video_frame_info_t video_info, --+ video_frame_info_t *video_info, -- unsigned width, unsigned height, bool fullscreen) -- { -- #if defined(HAVE_COCOA) --@@ -416,27 +416,17 @@ static void cocoagl_gfx_ctx_get_video_size(void *data, unsigned* width, unsigned -- *height = CGRectGetHeight(size) * screenscale; -- } -- ---static void cocoagl_gfx_ctx_update_window_title(void *data, video_frame_info_t video_info) --+static void cocoagl_gfx_ctx_update_title(void *data, video_frame_info_t *video_info) -- { -- #if defined(HAVE_COCOA) -- ui_window_cocoa_t view; --- const ui_window_t *window = NULL; ---#endif --- static char buf_fps[128] = {0}; --- static char buf[128] = {0}; --- --- video_monitor_get_fps(video_info, buf, sizeof(buf), --- buf_fps, sizeof(buf_fps)); --- ---#if defined(HAVE_COCOA) --- window = ui_companion_driver_get_window_ptr(); --+ const ui_window_t *window = ui_companion_driver_get_window_ptr(); --+ -- view.data = (CocoaView*)nsview_get_ptr(); -- --- if (window && *buf) --- window->set_title(&view, buf); --+ if (window && video_info->monitor_fps_enable) --+ window->set_title(&view, video_info->window_text); -- #endif --- if (video_info.fps_show) --- runloop_msg_queue_push(buf_fps, 1, 1, false); -- } -- -- static bool cocoagl_gfx_ctx_get_metrics(void *data, enum display_metric_types type, --@@ -537,7 +527,7 @@ static bool cocoagl_gfx_ctx_has_windowed(void *data) -- #endif -- } -- ---static void cocoagl_gfx_ctx_swap_buffers(void *data, video_frame_info_t video_info) --+static void cocoagl_gfx_ctx_swap_buffers(void *data, video_frame_info_t *video_info) -- { -- if (!(--g_fast_forward_skips < 0)) -- return; --diff --git a/gfx/drivers_context/d3d_ctx.cpp b/gfx/drivers_context/d3d_ctx.cpp --index f5d4233bb..9c6acaaaf 100644 ----- a/gfx/drivers_context/d3d_ctx.cpp --+++ b/gfx/drivers_context/d3d_ctx.cpp --@@ -76,7 +76,7 @@ static bool gfx_ctx_d3d_set_resize(void *data, unsigned new_width, unsigned new_ -- return true; -- } -- ---static void gfx_ctx_d3d_swap_buffers(void *data, video_frame_info_t video_info) --+static void gfx_ctx_d3d_swap_buffers(void *data, video_frame_info_t *video_info) -- { -- d3d_video_t *d3d = (d3d_video_t*)data; -- LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)d3d->dev; --@@ -84,25 +84,11 @@ static void gfx_ctx_d3d_swap_buffers(void *data, video_frame_info_t video_info) -- d3d_swap(d3d, d3dr); -- } -- ---static void gfx_ctx_d3d_update_title(void *data, video_frame_info_t video_info) --+static void gfx_ctx_d3d_update_title(void *data, video_frame_info_t *video_info) -- { --- char buf[128]; --- char buffer_fps[128]; --- const ui_window_t *window = ui_companion_driver_get_window_ptr(); --- --- buf[0] = buffer_fps[0] = '\0'; --- --- if (window && video_monitor_get_fps(video_info, buf, sizeof(buf), --- buffer_fps, sizeof(buffer_fps))) --- { ---#ifndef _XBOX --- window->set_title(&main_window, buf); ---#endif --- } --- --- if (video_info.fps_show) --- { -- #ifdef _XBOX --+ if (video_info->fps_show) --+ { -- MEMORYSTATUS stat; -- char mem[128]; -- --@@ -111,10 +97,15 @@ static void gfx_ctx_d3d_update_title(void *data, video_frame_info_t video_info) -- GlobalMemoryStatus(&stat); -- snprintf(mem, sizeof(mem), "|| MEM: %.2f/%.2fMB", -- stat.dwAvailPhys/(1024.0f*1024.0f), stat.dwTotalPhys/(1024.0f*1024.0f)); --- strlcat(buffer_fps, mem, sizeof(buffer_fps)); ---#endif --- runloop_msg_queue_push(buffer_fps, 1, 1, false); --+ strlcat(video_info->fps_text, mem, sizeof(video_info->fps_text)); -- } --+#else --+ const ui_window_t *window = ui_companion_driver_get_window_ptr(); --+ --+ if (window && video_info->monitor_fps_enable) --+ window->set_title(&main_window, video_info->window_text); --+#endif --+ -- } -- -- static void gfx_ctx_d3d_show_mouse(void *data, bool state) --@@ -197,7 +188,7 @@ static void gfx_ctx_d3d_input_driver(void *data, -- } -- -- static bool gfx_ctx_d3d_set_video_mode(void *data, --- video_frame_info_t video_info, --+ video_frame_info_t *video_info, -- unsigned width, unsigned height, -- bool fullscreen) -- { --diff --git a/gfx/drivers_context/drm_ctx.c b/gfx/drivers_context/drm_ctx.c --index b8738d316..2956e4762 100644 ----- a/gfx/drivers_context/drm_ctx.c --+++ b/gfx/drivers_context/drm_ctx.c --@@ -225,7 +225,7 @@ static bool gfx_ctx_drm_queue_flip(void) -- return false; -- } -- ---static void gfx_ctx_drm_swap_buffers(void *data, video_frame_info_t video_info) --+static void gfx_ctx_drm_swap_buffers(void *data, video_frame_info_t *video_info) -- { -- gfx_ctx_drm_data_t *drm = (gfx_ctx_drm_data_t*)data; -- --@@ -253,7 +253,7 @@ static void gfx_ctx_drm_swap_buffers(void *data, video_frame_info_t video_info) -- waiting_for_flip = gfx_ctx_drm_queue_flip(); -- -- /* Triple-buffered page flips */ --- if (video_info.max_swapchain_images >= 3 && --+ if (video_info->max_swapchain_images >= 3 && -- gbm_surface_has_free_buffers(g_gbm_surface)) -- return; -- --@@ -270,18 +270,8 @@ static bool gfx_ctx_drm_set_resize(void *data, -- return false; -- } -- ---static void gfx_ctx_drm_update_window_title(void *data, video_frame_info_t video_info) --+static void gfx_ctx_drm_update_window_title(void *data, video_frame_info_t *video_info) -- { --- char buf[128]; --- char buf_fps[128]; --- --- buf[0] = buf_fps[0] = '\0'; --- --- 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); -- } -- -- static void gfx_ctx_drm_get_video_size(void *data, --@@ -617,7 +607,7 @@ error: -- #endif -- -- static bool gfx_ctx_drm_set_video_mode(void *data, --- video_frame_info_t video_info, --+ video_frame_info_t *video_info, -- unsigned width, unsigned height, -- bool fullscreen) -- { --@@ -634,7 +624,7 @@ static bool gfx_ctx_drm_set_video_mode(void *data, -- /* If we use black frame insertion, -- * we fake a 60 Hz monitor for 120 Hz one, -- * etc, so try to match that. */ --- refresh_mod = video_info.black_frame_insertion --+ refresh_mod = video_info->black_frame_insertion -- ? 0.5f : 1.0f; -- -- /* Find desired video mode, and use that. --@@ -660,7 +650,7 @@ static bool gfx_ctx_drm_set_video_mode(void *data, -- continue; -- -- diff = fabsf(refresh_mod * g_drm_connector->modes[i].vrefresh --- - video_info.refresh_rate); --+ - video_info->refresh_rate); -- -- if (!g_drm_mode || diff < minimum_fps_diff) -- { --diff --git a/gfx/drivers_context/emscriptenegl_ctx.c b/gfx/drivers_context/emscriptenegl_ctx.c --index 1b750a368..6e5c5eb85 100644 ----- a/gfx/drivers_context/emscriptenegl_ctx.c --+++ b/gfx/drivers_context/emscriptenegl_ctx.c --@@ -75,7 +75,7 @@ static void gfx_ctx_emscripten_check_window(void *data, bool *quit, -- *quit = false; -- } -- ---static void gfx_ctx_emscripten_swap_buffers(void *data, video_frame_info_t video_info) --+static void gfx_ctx_emscripten_swap_buffers(void *data, video_frame_info_t *video_info) -- { -- (void)data; -- /* no-op in emscripten, no way to force swap/wait for VSync in browsers */ --@@ -90,17 +90,8 @@ static bool gfx_ctx_emscripten_set_resize(void *data, -- return false; -- } -- ---static void gfx_ctx_emscripten_update_window_title(void *data, video_frame_info_t video_info) --+static void gfx_ctx_emscripten_update_title(void *data, video_frame_info_t *video_info) -- { --- char buf[128]; --- char buf_fps[128]; --- --- buf[0] = buf_fps[0] = '\0'; --- --- 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); -- } -- -- static void gfx_ctx_emscripten_get_video_size(void *data, --@@ -189,7 +180,7 @@ error: -- } -- -- static bool gfx_ctx_emscripten_set_video_mode(void *data, --- video_frame_info_t video_info, --+ video_frame_info_t *video_info, -- unsigned width, unsigned height, -- bool fullscreen) -- { --@@ -330,7 +321,7 @@ const gfx_ctx_driver_t gfx_ctx_emscripten = { -- NULL, /* get_video_output_next */ -- NULL, /* get_metrics */ -- gfx_ctx_emscripten_translate_aspect, --- gfx_ctx_emscripten_update_window_title, --+ gfx_ctx_emscripten_update_title, -- gfx_ctx_emscripten_check_window, -- gfx_ctx_emscripten_set_resize, -- gfx_ctx_emscripten_has_focus, --diff --git a/gfx/drivers_context/gdi_ctx.cpp b/gfx/drivers_context/gdi_ctx.cpp --index 7f35a5a99..1c3d30cef 100644 ----- a/gfx/drivers_context/gdi_ctx.cpp --+++ b/gfx/drivers_context/gdi_ctx.cpp --@@ -87,19 +87,12 @@ static bool gfx_ctx_gdi_set_resize(void *data, -- return false; -- } -- ---static void gfx_ctx_gdi_update_window_title(void *data, video_frame_info_t video_info) --+static void gfx_ctx_gdi_update_title(void *data, video_frame_info_t *video_info) -- { --- char buf[128]; --- char buf_fps[128]; -- const ui_window_t *window = ui_companion_driver_get_window_ptr(); -- --- buf[0] = buf_fps[0] = '\0'; --- --- 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) --- runloop_msg_queue_push(buf_fps, 1, 1, false); --+ if (window && video_info->monitor_fps_enable) --+ window->set_title(&main_window, video_info->window_text); -- } -- -- static void gfx_ctx_gdi_get_video_size(void *data, --@@ -190,7 +183,7 @@ static void gfx_ctx_gdi_destroy(void *data) -- } -- -- static bool gfx_ctx_gdi_set_video_mode(void *data, --- video_frame_info_t video_info, --+ video_frame_info_t *video_info, -- unsigned width, unsigned height, -- bool fullscreen) -- { --@@ -287,7 +280,7 @@ static uint32_t gfx_ctx_gdi_get_flags(void *data) -- return flags; -- } -- ---static void gfx_ctx_gdi_swap_buffers(void *data, video_frame_info_t video_info) --+static void gfx_ctx_gdi_swap_buffers(void *data, video_frame_info_t *video_info) -- { -- (void)data; -- --diff --git a/gfx/drivers_context/gfx_null_ctx.c b/gfx/drivers_context/gfx_null_ctx.c --index f4cf4f63d..90b1cb2de 100644 ----- a/gfx/drivers_context/gfx_null_ctx.c --+++ b/gfx/drivers_context/gfx_null_ctx.c --@@ -35,7 +35,7 @@ static void gfx_ctx_null_check_window(void *data, bool *quit, -- (void)resize; -- } -- ---static void gfx_ctx_null_swap_buffers(void *data, video_frame_info_t video_info) --+static void gfx_ctx_null_swap_buffers(void *data, video_frame_info_t *video_info) -- { -- (void)data; -- } --@@ -48,10 +48,8 @@ static bool gfx_ctx_null_set_resize(void *data, unsigned width, unsigned height) -- return false; -- } -- ---static void gfx_ctx_null_update_window_title(void *data, video_frame_info_t video_info) --+static void gfx_ctx_null_update_window_title(void *data, video_frame_info_t *video_info) -- { --- (void)data; --- (void)video_info; -- } -- -- static void gfx_ctx_null_get_video_size(void *data, unsigned *width, unsigned *height) --@@ -62,7 +60,7 @@ static void gfx_ctx_null_get_video_size(void *data, unsigned *width, unsigned *h -- } -- -- static bool gfx_ctx_null_set_video_mode(void *data, --- video_frame_info_t video_info, --+ video_frame_info_t *video_info, -- unsigned width, unsigned height, -- bool fullscreen) -- { --diff --git a/gfx/drivers_context/khr_display_ctx.c b/gfx/drivers_context/khr_display_ctx.c --index 80276bae1..c6fcd07e2 100644 ----- a/gfx/drivers_context/khr_display_ctx.c --+++ b/gfx/drivers_context/khr_display_ctx.c --@@ -110,21 +110,12 @@ static bool gfx_ctx_khr_display_set_resize(void *data, -- return false; -- } -- ---static void gfx_ctx_khr_display_update_window_title(void *data, video_frame_info_t video_info) --+static void gfx_ctx_khr_display_update_window_title(void *data, video_frame_info_t *video_info) -- { --- char buf[128]; --- char buf_fps[128]; --- --- buf[0] = buf_fps[0] = '\0'; --- --- 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); -- } -- -- static bool gfx_ctx_khr_display_set_video_mode(void *data, --- video_frame_info_t video_info, --+ video_frame_info_t *video_info, -- unsigned width, unsigned height, -- bool fullscreen) -- { --@@ -201,7 +192,7 @@ static void gfx_ctx_khr_display_set_swap_interval(void *data, unsigned swap_inte -- } -- } -- ---static void gfx_ctx_khr_display_swap_buffers(void *data, video_frame_info_t video_info) --+static void gfx_ctx_khr_display_swap_buffers(void *data, video_frame_info_t *video_info) -- { -- khr_display_ctx_data_t *khr = (khr_display_ctx_data_t*)data; -- vulkan_present(&khr->vk, khr->vk.context.current_swapchain_index); --diff --git a/gfx/drivers_context/mali_fbdev_ctx.c b/gfx/drivers_context/mali_fbdev_ctx.c --index de76f06ae..977919627 100644 ----- a/gfx/drivers_context/mali_fbdev_ctx.c --+++ b/gfx/drivers_context/mali_fbdev_ctx.c --@@ -158,21 +158,12 @@ static bool gfx_ctx_mali_fbdev_set_resize(void *data, -- return false; -- } -- ---static void gfx_ctx_mali_fbdev_update_window_title(void *data, video_frame_info_t video_info) --+static void gfx_ctx_mali_fbdev_update_title(void *data, video_frame_info_t *video_info) -- { --- char buf[128]; --- char buf_fps[128]; --- --- buf[0] = buf_fps[0] = '\0'; --- --- 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); -- } -- -- static bool gfx_ctx_mali_fbdev_set_video_mode(void *data, --- video_frame_info_t video_info, --+ video_frame_info_t *video_info, -- unsigned width, unsigned height, -- bool fullscreen) -- { --@@ -269,7 +260,7 @@ static void gfx_ctx_mali_fbdev_set_swap_interval(void *data, unsigned swap_inter -- #endif -- } -- ---static void gfx_ctx_mali_fbdev_swap_buffers(void *data, video_frame_info_t video_info) --+static void gfx_ctx_mali_fbdev_swap_buffers(void *data, video_frame_info_t *video_info) -- { -- mali_ctx_data_t *mali = (mali_ctx_data_t*)data; -- --@@ -319,7 +310,7 @@ const gfx_ctx_driver_t gfx_ctx_mali_fbdev = { -- NULL, /* get_video_output_next */ -- NULL, /* get_metrics */ -- NULL, --- gfx_ctx_mali_fbdev_update_window_title, --+ gfx_ctx_mali_fbdev_update_title, -- gfx_ctx_mali_fbdev_check_window, -- gfx_ctx_mali_fbdev_set_resize, -- gfx_ctx_mali_fbdev_has_focus, --diff --git a/gfx/drivers_context/opendingux_fbdev_ctx.c b/gfx/drivers_context/opendingux_fbdev_ctx.c --index bab164cad..d613c18a8 100644 ----- a/gfx/drivers_context/opendingux_fbdev_ctx.c --+++ b/gfx/drivers_context/opendingux_fbdev_ctx.c --@@ -141,21 +141,12 @@ static bool gfx_ctx_opendingux_set_resize(void *data, -- return false; -- } -- ---static void gfx_ctx_opendingux_update_window_title(void *data, video_frame_info_t video_info) --+static void gfx_ctx_opendingux_update_title(void *data, video_frame_info_t *video_info) -- { --- char buf[128]; --- char buf_fps[128]; --- --- buf[0] = buf_fps[0] = '\0'; --- --- 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); -- } -- -- static bool gfx_ctx_opendingux_set_video_mode(void *data, --- video_frame_info_t video_info, --+ video_frame_info_t *video_info, -- unsigned width, unsigned height, -- bool fullscreen) -- { --@@ -232,7 +223,7 @@ static bool gfx_ctx_opendingux_has_windowed(void *data) -- return false; -- } -- ---static void gfx_ctx_opendingux_swap_buffers(void *data, video_frame_info_t video_info) --+static void gfx_ctx_opendingux_swap_buffers(void *data, video_frame_info_t *video_info) -- { -- opendingux_ctx_data_t *viv = (opendingux_ctx_data_t*)data; -- --diff --git a/gfx/drivers_context/osmesa_ctx.c b/gfx/drivers_context/osmesa_ctx.c --index f6899ece1..829d6c38b 100644 ----- a/gfx/drivers_context/osmesa_ctx.c --+++ b/gfx/drivers_context/osmesa_ctx.c --@@ -238,7 +238,7 @@ static void osmesa_ctx_swap_interval(void *data, unsigned interval) -- } -- -- static bool osmesa_ctx_set_video_mode(void *data, --- video_frame_info_t video_info, --+ video_frame_info_t *video_info, -- unsigned width, unsigned height, -- bool fullscreen) -- { --@@ -306,20 +306,8 @@ static void osmesa_ctx_get_video_size(void *data, -- *height = osmesa->height; -- } -- ---static void osmesa_ctx_update_window_title(void *data, video_frame_info_t video_info) --+static void osmesa_ctx_update_title(void *data, video_frame_info_t *video_info) -- { --- static char buf[128] = {0}; --- static char buf_fps[128] = {0}; --- gfx_ctx_osmesa_data_t *osmesa = (gfx_ctx_osmesa_data_t*)data; --- --- if (!osmesa) --- return; --- --- 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); -- } -- -- static void osmesa_ctx_check_window(void *data, bool *quit, bool *resize,unsigned *width, --@@ -361,7 +349,7 @@ static bool osmesa_ctx_has_windowed(void *data) -- return true; -- } -- ---static void osmesa_ctx_swap_buffers(void *data, video_frame_info_t video_info) --+static void osmesa_ctx_swap_buffers(void *data, video_frame_info_t *video_info) -- { -- gfx_ctx_osmesa_data_t *osmesa = (gfx_ctx_osmesa_data_t*)data; -- osmesa_fifo_accept(osmesa); --@@ -417,7 +405,7 @@ const gfx_ctx_driver_t gfx_ctx_osmesa = -- NULL, /* get_video_output_next */ -- NULL, /* get_metrics */ -- NULL, /* translate_aspect */ --- osmesa_ctx_update_window_title, --+ osmesa_ctx_update_title, -- osmesa_ctx_check_window, -- osmesa_ctx_set_resize, -- osmesa_ctx_has_focus, --diff --git a/gfx/drivers_context/ps3_ctx.c b/gfx/drivers_context/ps3_ctx.c --index fa34420ec..4a26e0b4c 100644 ----- a/gfx/drivers_context/ps3_ctx.c --+++ b/gfx/drivers_context/ps3_ctx.c --@@ -179,7 +179,7 @@ static bool gfx_ctx_ps3_has_windowed(void *data) -- return false; -- } -- ---static void gfx_ctx_ps3_swap_buffers(void *data, video_frame_info_t video_info) --+static void gfx_ctx_ps3_swap_buffers(void *data, video_frame_info_t *video_info) -- { -- (void)data; -- #ifdef HAVE_LIBDBGFONT --@@ -199,19 +199,8 @@ static bool gfx_ctx_ps3_set_resize(void *data, -- return false; -- } -- ---static void gfx_ctx_ps3_update_window_title(void *data, video_frame_info_t video_info) --+static void gfx_ctx_ps3_update_title(void *data, video_frame_info_t *video_info) -- { --- char buf[128]; --- char buf_fps[128]; --- --- buf[0] = buf_fps[0] = '\0'; --- --- (void)data; --- --- 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); -- } -- -- static void gfx_ctx_ps3_get_video_size(void *data, --@@ -302,15 +291,10 @@ static void *gfx_ctx_ps3_init(video_frame_info_t video_info, void *video_driver) -- } -- -- static bool gfx_ctx_ps3_set_video_mode(void *data, --- video_frame_info_t video_info, --+ video_frame_info_t *video_info, -- unsigned width, unsigned height, -- bool fullscreen) -- { --- global_t *global = global_get_ptr(); --- --- if (!global) --- return false; --- -- return true; -- } -- --@@ -438,7 +422,7 @@ const gfx_ctx_driver_t gfx_ctx_ps3 = { -- gfx_ctx_ps3_get_video_output_next, -- NULL, /* get_metrics */ -- NULL, --- gfx_ctx_ps3_update_window_title, --+ gfx_ctx_ps3_update_title, -- gfx_ctx_ps3_check_window, -- gfx_ctx_ps3_set_resize, -- gfx_ctx_ps3_has_focus, --diff --git a/gfx/drivers_context/qnx_ctx.c b/gfx/drivers_context/qnx_ctx.c --index 31ffdbda4..8308f60fc 100644 ----- a/gfx/drivers_context/qnx_ctx.c --+++ b/gfx/drivers_context/qnx_ctx.c --@@ -319,21 +319,12 @@ static bool gfx_ctx_qnx_set_resize(void *data, -- return false; -- } -- ---static void gfx_ctx_qnx_update_window_title(void *data, video_frame_info_t video_info) --+static void gfx_ctx_qnx_update_title(void *data, video_frame_info_t *video_info) -- { --- char buf[128]; --- char buf_fps[128]; --- --- buf[0] = buf_fps[0] = '\0'; --- --- video_monitor_get_fps(buf, sizeof(buf), --- buf_fps, sizeof(buf_fps)); --- if (video_info.fps_show) --- runloop_msg_queue_push(buf_fps, 1, 1, false); -- } -- -- static bool gfx_ctx_qnx_set_video_mode(void *data, --- video_frame_info_t video_info, --+ video_frame_info_t *video_info, -- unsigned width, unsigned height, -- bool fullscreen) -- { --@@ -444,7 +435,7 @@ static void gfx_ctx_qnx_set_swap_interval(void *data, unsigned swap_interval) -- #endif -- } -- ---static void gfx_ctx_qnx_swap_buffers(void *data, video_frame_info_t video_info) --+static void gfx_ctx_qnx_swap_buffers(void *data, video_frame_info_t *video_info) -- { -- qnx_ctx_data_t *qnx = (qnx_ctx_data_t*)data; -- --@@ -493,7 +484,7 @@ const gfx_ctx_driver_t gfx_ctx_qnx = { -- NULL, /* get_video_output_next */ -- gfx_ctx_qnx__get_metrics, -- NULL, --- gfx_ctx_qnx_update_window_title, --+ gfx_ctx_qnx_update_title, -- gfx_ctx_qnx_check_window, -- gfx_ctx_qnx_set_resize, -- gfx_ctx_qnx_has_focus, --diff --git a/gfx/drivers_context/sdl_gl_ctx.c b/gfx/drivers_context/sdl_gl_ctx.c --index 50dd0c33a..e4c34a819 100644 ----- a/gfx/drivers_context/sdl_gl_ctx.c --+++ b/gfx/drivers_context/sdl_gl_ctx.c --@@ -163,7 +163,7 @@ static void sdl_ctx_swap_interval(void *data, unsigned interval) -- } -- -- static bool sdl_ctx_set_video_mode(void *data, --- video_frame_info_t video_info, --+ video_frame_info_t *video_info, -- unsigned width, unsigned height, -- bool fullscreen) -- { --@@ -177,7 +177,7 @@ static bool sdl_ctx_set_video_mode(void *data, -- -- if (fullscreen) -- { --- if (video_info.windowed_fullscreen) --+ if (video_info->windowed_fullscreen) -- fsflag = SDL_WINDOW_FULLSCREEN_DESKTOP; -- else -- fsflag = SDL_WINDOW_FULLSCREEN; --@@ -192,7 +192,7 @@ static bool sdl_ctx_set_video_mode(void *data, -- } -- else -- { --- unsigned display = video_info.monitor_index; --+ unsigned display = video_info->monitor_index; -- -- sdl->g_win = SDL_CreateWindow("", SDL_WINDOWPOS_UNDEFINED_DISPLAY(display), -- SDL_WINDOWPOS_UNDEFINED_DISPLAY(display), --@@ -268,27 +268,18 @@ static void sdl_ctx_get_video_size(void *data, -- } -- } -- ---static void sdl_ctx_update_window_title(void *data, video_frame_info_t video_info) --+static void sdl_ctx_update_title(void *data, video_frame_info_t *video_info) -- { --- char buf[128]; --- char buf_fps[128]; --- --- buf[0] = buf_fps[0] = '\0'; --- --- if (video_monitor_get_fps(video_info, buf, sizeof(buf), --- buf_fps, sizeof(buf_fps))) --+ if (video_info->monitor_fps_enable) -- { -- #ifdef HAVE_SDL2 -- gfx_ctx_sdl_data_t *sdl = (gfx_ctx_sdl_data_t*)data; -- if (sdl) --- SDL_SetWindowTitle(sdl->g_win, buf); --+ SDL_SetWindowTitle(sdl->g_win, video_info->window_text); -- #else --- SDL_WM_SetCaption(buf, NULL); --+ SDL_WM_SetCaption(video_info->window_text, NULL); -- #endif -- } --- --- if (video_info.fps_show) --- runloop_msg_queue_push(buf_fps, 1, 1, false); -- } -- -- static void sdl_ctx_check_window(void *data, bool *quit, bool *resize,unsigned *width, --@@ -379,7 +370,7 @@ static bool sdl_ctx_has_windowed(void *data) -- return true; -- } -- ---static void sdl_ctx_swap_buffers(void *data, video_frame_info_t video_info) --+static void sdl_ctx_swap_buffers(void *data, video_frame_info_t *video_info) -- { -- #ifdef HAVE_SDL2 -- gfx_ctx_sdl_data_t *sdl = (gfx_ctx_sdl_data_t*)data; --@@ -435,7 +426,7 @@ const gfx_ctx_driver_t gfx_ctx_sdl_gl = -- NULL, /* get_video_output_next */ -- NULL, /* get_metrics */ -- NULL, /* translate_aspect */ --- sdl_ctx_update_window_title, --+ sdl_ctx_update_title, -- sdl_ctx_check_window, -- sdl_ctx_set_resize, -- sdl_ctx_has_focus, --diff --git a/gfx/drivers_context/vc_egl_ctx.c b/gfx/drivers_context/vc_egl_ctx.c --index 959b0571e..090c507ec 100644 ----- a/gfx/drivers_context/vc_egl_ctx.c --+++ b/gfx/drivers_context/vc_egl_ctx.c --@@ -105,17 +105,8 @@ static bool gfx_ctx_vc_set_resize(void *data, unsigned width, unsigned height) -- return false; -- } -- ---static void gfx_ctx_vc_update_window_title(void *data, video_frame_info_t video_info) --+static void gfx_ctx_vc_update_title(void *data, video_frame_info_t *video_info) -- { --- char buf[128]; --- char buf_fps[128]; --- --- buf[0] = buf_fps[0] = '\0'; --- --- 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); -- } -- -- static void gfx_ctx_vc_get_video_size(void *data, --@@ -319,7 +310,7 @@ static void gfx_ctx_vc_set_swap_interval(void *data, unsigned swap_interval) -- } -- -- static bool gfx_ctx_vc_set_video_mode(void *data, --- video_frame_info_t video_info, --+ video_frame_info_t *video_info, -- unsigned width, unsigned height, -- bool fullscreen) -- { --@@ -608,7 +599,7 @@ error: -- return false; -- } -- ---static void gfx_ctx_vc_swap_buffers(void *data, video_frame_info_t video_info) --+static void gfx_ctx_vc_swap_buffers(void *data, video_frame_info_t *video_info) -- { -- vc_ctx_data_t *vc = (vc_ctx_data_t*)data; -- --@@ -659,7 +650,7 @@ const gfx_ctx_driver_t gfx_ctx_videocore = { -- NULL, /* get_video_output_next */ -- NULL, /* get_metrics */ -- gfx_ctx_vc_translate_aspect, --- gfx_ctx_vc_update_window_title, --+ gfx_ctx_vc_update_title, -- gfx_ctx_vc_check_window, -- gfx_ctx_vc_set_resize, -- gfx_ctx_vc_has_focus, --diff --git a/gfx/drivers_context/vivante_fbdev_ctx.c b/gfx/drivers_context/vivante_fbdev_ctx.c --index ac12fc7af..ea10357d0 100644 ----- a/gfx/drivers_context/vivante_fbdev_ctx.c --+++ b/gfx/drivers_context/vivante_fbdev_ctx.c --@@ -145,21 +145,12 @@ static bool gfx_ctx_vivante_set_resize(void *data, -- return false; -- } -- ---static void gfx_ctx_vivante_update_window_title(void *data, video_frame_info_t video_info) --+static void gfx_ctx_vivante_update_title(void *data, video_frame_info_t *video_info) -- { --- char buf[128]; --- char buf_fps[128]; --- --- buf[0] = buf_fps[0] = '\0'; --- --- 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); -- } -- -- static bool gfx_ctx_vivante_set_video_mode(void *data, --- video_frame_info_t video_info, --+ video_frame_info_t *video_info, -- unsigned width, unsigned height, -- bool fullscreen) -- { --@@ -246,7 +237,7 @@ static void gfx_ctx_vivante_set_swap_interval(void *data, unsigned swap_interval -- #endif -- } -- ---static void gfx_ctx_vivante_swap_buffers(void *data, video_frame_info_t video_info) --+static void gfx_ctx_vivante_swap_buffers(void *data, video_frame_info_t *video_info) -- { -- vivante_ctx_data_t *viv = (vivante_ctx_data_t*)data; -- --@@ -297,7 +288,7 @@ const gfx_ctx_driver_t gfx_ctx_vivante_fbdev = { -- NULL, /* get_video_output_next */ -- NULL, /* get_metrics */ -- NULL, --- gfx_ctx_vivante_update_window_title, --+ gfx_ctx_vivante_update_title, -- gfx_ctx_vivante_check_window, -- gfx_ctx_vivante_set_resize, -- gfx_ctx_vivante_has_focus, --diff --git a/gfx/drivers_context/wayland_ctx.c b/gfx/drivers_context/wayland_ctx.c --index a59e99f91..13a9990e9 100644 ----- a/gfx/drivers_context/wayland_ctx.c --+++ b/gfx/drivers_context/wayland_ctx.c --@@ -719,20 +719,12 @@ static bool gfx_ctx_wl_set_resize(void *data, unsigned width, unsigned height) -- return true; -- } -- ---static void gfx_ctx_wl_update_window_title(void *data, video_frame_info_t video_info) --+static void gfx_ctx_wl_update_title(void *data, video_frame_info_t *video_info) -- { --- char buf[128]; --- char buf_fps[128]; -- gfx_ctx_wayland_data_t *wl = (gfx_ctx_wayland_data_t*)data; -- --- buf[0] = buf_fps[0] = '\0'; --- --- if (video_monitor_get_fps(video_info, buf, sizeof(buf), --- buf_fps, sizeof(buf_fps))) --- wl_shell_surface_set_title(wl->shell_surf, buf); --- --- if (video_info.fps_show) --- runloop_msg_queue_push(buf_fps, 1, 1, false); --+ if (wl && video_info->monitor_fps_enable) --+ wl_shell_surface_set_title(wl->shell_surf, video_info->window_text); -- } -- -- --@@ -1075,7 +1067,7 @@ static void gfx_ctx_wl_set_swap_interval(void *data, unsigned swap_interval) -- } -- -- static bool gfx_ctx_wl_set_video_mode(void *data, --- video_frame_info_t video_info, --+ video_frame_info_t *video_info, -- unsigned width, unsigned height, -- bool fullscreen) -- { --@@ -1557,7 +1549,7 @@ static void *gfx_ctx_wl_get_context_data(void *data) -- } -- #endif -- ---static void gfx_ctx_wl_swap_buffers(void *data, video_frame_info_t video_info) --+static void gfx_ctx_wl_swap_buffers(void *data, video_frame_info_t *video_info) -- { -- gfx_ctx_wayland_data_t *wl = (gfx_ctx_wayland_data_t*)data; -- --@@ -1676,7 +1668,7 @@ const gfx_ctx_driver_t gfx_ctx_wayland = { -- NULL, /* get_video_output_next */ -- gfx_ctx_wl_get_metrics, -- NULL, --- gfx_ctx_wl_update_window_title, --+ gfx_ctx_wl_update_title, -- gfx_ctx_wl_check_window, -- gfx_ctx_wl_set_resize, -- gfx_ctx_wl_has_focus, --diff --git a/gfx/drivers_context/wgl_ctx.cpp b/gfx/drivers_context/wgl_ctx.cpp --index fba99cf99..57c38441d 100644 ----- a/gfx/drivers_context/wgl_ctx.cpp --+++ b/gfx/drivers_context/wgl_ctx.cpp --@@ -331,7 +331,7 @@ static void gfx_ctx_wgl_check_window(void *data, bool *quit, -- } -- } -- ---static void gfx_ctx_wgl_swap_buffers(void *data, video_frame_info_t video_info) --+static void gfx_ctx_wgl_swap_buffers(void *data, video_frame_info_t *video_info) -- { -- (void)data; -- --@@ -386,19 +386,12 @@ static bool gfx_ctx_wgl_set_resize(void *data, -- return false; -- } -- ---static void gfx_ctx_wgl_update_window_title(void *data, video_frame_info_t video_info) --+static void gfx_ctx_wgl_update_title(void *data, video_frame_info_t *video_info) -- { --- char buf[128]; --- char buf_fps[128]; -- const ui_window_t *window = ui_companion_driver_get_window_ptr(); -- --- buf[0] = buf_fps[0] = '\0'; --- --- 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) --- runloop_msg_queue_push(buf_fps, 1, 1, false); --+ if (window && video_info->monitor_fps_enable) --+ window->set_title(&main_window, video_info->window_text); -- } -- -- static void gfx_ctx_wgl_get_video_size(void *data, --@@ -525,7 +518,7 @@ static void gfx_ctx_wgl_destroy(void *data) -- } -- -- static bool gfx_ctx_wgl_set_video_mode(void *data, --- video_frame_info_t video_info, --+ video_frame_info_t *video_info, -- unsigned width, unsigned height, -- bool fullscreen) -- { --@@ -687,7 +680,7 @@ const gfx_ctx_driver_t gfx_ctx_wgl = { -- NULL, /* get_video_output_next */ -- gfx_ctx_wgl_get_metrics, -- NULL, --- gfx_ctx_wgl_update_window_title, --+ gfx_ctx_wgl_update_title, -- gfx_ctx_wgl_check_window, -- gfx_ctx_wgl_set_resize, -- gfx_ctx_wgl_has_focus, --diff --git a/gfx/drivers_context/x_ctx.c b/gfx/drivers_context/x_ctx.c --index 50a504abc..cb5cac058 100644 ----- a/gfx/drivers_context/x_ctx.c --+++ b/gfx/drivers_context/x_ctx.c --@@ -302,7 +302,7 @@ static void gfx_ctx_x_swap_interval(void *data, unsigned interval) -- } -- } -- ---static void gfx_ctx_x_swap_buffers(void *data, video_frame_info_t video_info) --+static void gfx_ctx_x_swap_buffers(void *data, video_frame_info_t *video_info) -- { -- gfx_ctx_x_data_t *x = (gfx_ctx_x_data_t*)data; -- --@@ -545,7 +545,7 @@ error: -- } -- -- static bool gfx_ctx_x_set_video_mode(void *data, --- video_frame_info_t video_info, --+ video_frame_info_t *video_info, -- unsigned width, unsigned height, -- bool fullscreen) -- { --@@ -565,7 +565,7 @@ static bool gfx_ctx_x_set_video_mode(void *data, -- if (!x) -- return false; -- --- windowed_full = video_info.windowed_fullscreen; --+ windowed_full = video_info->windowed_fullscreen; -- true_full = false; -- -- switch (x_api) --@@ -613,8 +613,8 @@ static bool gfx_ctx_x_set_video_mode(void *data, -- RARCH_ERR("[GLX]: Entering true fullscreen failed. Will attempt windowed mode.\n"); -- } -- --- if (video_info.monitor_index) --- g_x11_screen = video_info.monitor_index - 1; --+ if (video_info->monitor_index) --+ g_x11_screen = video_info->monitor_index - 1; -- -- #ifdef HAVE_XINERAMA -- if (fullscreen || g_x11_screen != 0) --@@ -662,7 +662,7 @@ static bool gfx_ctx_x_set_video_mode(void *data, -- -- -- x11_set_window_attr(g_x11_dpy, g_x11_win); --- x11_update_window_title(NULL, video_info); --+ x11_update_title(NULL, video_info); -- -- if (fullscreen) -- x11_show_mouse(g_x11_dpy, g_x11_win, false); --@@ -1081,7 +1081,7 @@ const gfx_ctx_driver_t gfx_ctx_x = { -- NULL, /* get_video_output_next */ -- x11_get_metrics, -- NULL, --- x11_update_window_title, --+ x11_update_title, -- gfx_ctx_x_check_window, -- gfx_ctx_x_set_resize, -- x11_has_focus, --diff --git a/gfx/drivers_context/xegl_ctx.c b/gfx/drivers_context/xegl_ctx.c --index 133736d84..c375a6861 100644 ----- a/gfx/drivers_context/xegl_ctx.c --+++ b/gfx/drivers_context/xegl_ctx.c --@@ -257,7 +257,7 @@ static EGLint *xegl_fill_attribs(xegl_ctx_data_t *xegl, EGLint *attr) -- static void gfx_ctx_xegl_set_swap_interval(void *data, unsigned swap_interval); -- -- static bool gfx_ctx_xegl_set_video_mode(void *data, --- video_frame_info_t video_info, --+ video_frame_info_t *video_info, -- unsigned width, unsigned height, -- bool fullscreen) -- { --@@ -298,7 +298,7 @@ static bool gfx_ctx_xegl_set_video_mode(void *data, -- ButtonPressMask | ButtonReleaseMask | KeyReleaseMask; -- swa.override_redirect = fullscreen ? True : False; -- --- if (fullscreen && !video_info.windowed_fullscreen) --+ if (fullscreen && !video_info->windowed_fullscreen) -- { -- if (x11_enter_fullscreen(video_info, g_x11_dpy, width, height, &xegl->desktop_mode)) -- { --@@ -309,8 +309,8 @@ static bool gfx_ctx_xegl_set_video_mode(void *data, -- RARCH_ERR("[X/EGL]: Entering true fullscreen failed. Will attempt windowed mode.\n"); -- } -- --- if (video_info.monitor_index) --- g_x11_screen = video_info.monitor_index - 1; --+ if (video_info->monitor_index) --+ g_x11_screen = video_info->monitor_index - 1; -- -- #ifdef HAVE_XINERAMA -- if (fullscreen || g_x11_screen != 0) --@@ -352,7 +352,7 @@ static bool gfx_ctx_xegl_set_video_mode(void *data, -- goto error; -- -- x11_set_window_attr(g_x11_dpy, g_x11_win); --- x11_update_window_title(NULL, video_info); --+ x11_update_title(NULL, video_info); -- -- if (fullscreen) -- x11_show_mouse(g_x11_dpy, g_x11_win, false); --@@ -490,7 +490,7 @@ static void gfx_ctx_xegl_show_mouse(void *data, bool state) -- x11_show_mouse(g_x11_dpy, g_x11_win, state); -- } -- ---static void gfx_ctx_xegl_swap_buffers(void *data, video_frame_info_t video_info) --+static void gfx_ctx_xegl_swap_buffers(void *data, video_frame_info_t *video_info) -- { -- xegl_ctx_data_t *xegl = (xegl_ctx_data_t*)data; -- --@@ -591,7 +591,7 @@ const gfx_ctx_driver_t gfx_ctx_x_egl = -- NULL, /* get_video_output_next */ -- x11_get_metrics, -- NULL, --- x11_update_window_title, --+ x11_update_title, -- x11_check_window, -- gfx_ctx_xegl_set_resize, -- x11_has_focus, --diff --git a/gfx/video_context_driver.c b/gfx/video_context_driver.c --index 9bf06e725..254961f58 100644 ----- a/gfx/video_context_driver.c --+++ b/gfx/video_context_driver.c --@@ -456,7 +456,7 @@ bool video_context_driver_set_video_mode(gfx_ctx_mode_t *mode_info) -- video_driver_build_info(&video_info); -- -- if (!current_video_context->set_video_mode( --- video_context_data, video_info, mode_info->width, --+ video_context_data, &video_info, mode_info->width, -- mode_info->height, mode_info->fullscreen)) -- return false; -- return true; --diff --git a/gfx/video_context_driver.h b/gfx/video_context_driver.h --index 55a150c17..9b85f6d31 100644 ----- a/gfx/video_context_driver.h --+++ b/gfx/video_context_driver.h --@@ -78,7 +78,7 @@ typedef struct gfx_ctx_driver -- void (*swap_interval)(void *data, unsigned); -- -- /* Sets video mode. Creates a window, etc. */ --- bool (*set_video_mode)(void*, video_frame_info_t video_info, unsigned, unsigned, bool); --+ bool (*set_video_mode)(void*, video_frame_info_t *video_info, unsigned, unsigned, bool); -- -- /* Gets current window size. -- * If not initialized yet, it returns current screen size. */ --@@ -101,7 +101,7 @@ typedef struct gfx_ctx_driver -- float (*translate_aspect)(void*, unsigned, unsigned); -- -- /* Asks driver to update window title (FPS, etc). */ --- void (*update_window_title)(void*, video_frame_info_t video_info); --+ void (*update_window_title)(void*, video_frame_info_t *video_info); -- -- /* Queries for resize and quit events. -- * Also processes events. */ --@@ -123,7 +123,7 @@ typedef struct gfx_ctx_driver -- -- /* Swaps buffers. VBlank sync depends on -- * earlier calls to swap_interval. */ --- void (*swap_buffers)(void*, video_frame_info_t video_info); --+ void (*swap_buffers)(void*, video_frame_info_t *video_info); -- -- /* Most video backends will want to use a certain input driver. -- * Checks for it here. */ --diff --git a/gfx/video_driver.c b/gfx/video_driver.c --index 9ad62c93b..7146ed805 100644 ----- a/gfx/video_driver.c --+++ b/gfx/video_driver.c --@@ -1057,89 +1057,6 @@ bool video_monitor_fps_statistics(double *refresh_rate, -- } -- -- ---/** --- * video_monitor_get_fps: --- * @buf : string suitable for Window title --- * @size : size of buffer. --- * @buf_fps : string of raw FPS only (optional). --- * @size_fps : size of raw FPS buffer. --- * --- * Get the amount of frames per seconds. --- * --- * Returns: true if framerate per seconds could be obtained, --- * otherwise false. --- * --- **/ ---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; --- static retro_time_t fps_time; --- retro_time_t new_time = cpu_features_get_time_usec(); --- uint64_t frame_count = 0; --- --- video_driver_threaded_lock(); --- frame_count = video_driver_frame_count; --- video_driver_threaded_unlock(); --- --- *buf = '\0'; --- --- if (frame_count) --- { --- static float last_fps; --- bool ret = false; --- unsigned write_index = video_driver_frame_time_count++ & --- (MEASURE_FRAME_TIME_SAMPLES_COUNT - 1); --- --- video_driver_frame_time_samples[write_index] = new_time - fps_time; --- fps_time = new_time; --- --- if ((frame_count % FPS_UPDATE_INTERVAL) == 0) --- { --- char frames_text[64]; --- --- last_fps = TIME_TO_FPS(curr_time, new_time, FPS_UPDATE_INTERVAL); --- curr_time = new_time; --- --- fill_pathname_noext(buf, --- video_driver_title_buf, --- " || ", --- size); --- --- if (video_info.fps_show) --- { --- char fps_text[64]; --- snprintf(fps_text, sizeof(fps_text), " FPS: %6.1f || ", last_fps); --- strlcat(buf, fps_text, size); --- } --- --- strlcat(buf, "Frames: ", size); --- --- snprintf(frames_text, sizeof(frames_text), STRING_REP_UINT64, --- (unsigned long long)frame_count); --- --- strlcat(buf, frames_text, size); --- ret = true; --- } --- --- 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), --- (unsigned long long)frame_count); --- --- return ret; --- } --- --- curr_time = fps_time = new_time; --- strlcpy(buf, video_driver_title_buf, size); --- if (buf_fps) --- strlcpy(buf_fps, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE), size_fps); --- --- return true; ---} -- -- float video_driver_get_aspect_ratio(void) -- { --@@ -2087,6 +2004,93 @@ unsigned video_pixel_get_alignment(unsigned pitch) -- } -- -- /** --+ * video_monitor_get_fps: --+ * --+ * Get the amount of frames per seconds. --+ * --+ * Returns: true if framerate per seconds could be obtained, --+ * otherwise false. --+ * --+ **/ --+static bool video_monitor_get_fps(video_frame_info_t *video_info) --+{ --+ static retro_time_t curr_time; --+ static retro_time_t fps_time; --+ retro_time_t new_time = cpu_features_get_time_usec(); --+ --+ if (video_info->frame_count) --+ { --+ static float last_fps; --+ bool ret = false; --+ unsigned write_index = video_driver_frame_time_count++ & --+ (MEASURE_FRAME_TIME_SAMPLES_COUNT - 1); --+ --+ video_driver_frame_time_samples[write_index] = new_time - fps_time; --+ fps_time = new_time; --+ --+ if ((video_info->frame_count % FPS_UPDATE_INTERVAL) == 0) --+ { --+ char frames_text[64]; --+ --+ last_fps = TIME_TO_FPS(curr_time, new_time, FPS_UPDATE_INTERVAL); --+ curr_time = new_time; --+ --+ fill_pathname_noext(video_info->window_text, --+ video_driver_title_buf, --+ " || ", --+ sizeof(video_info->window_text)); --+ --+ if (video_info->fps_show) --+ { --+ char fps_text[64]; --+ snprintf(video_info->fps_text, --+ sizeof(video_info->fps_text), --+ " FPS: %6.1f || ", last_fps); --+ strlcat(video_info->window_text, --+ fps_text, --+ sizeof(video_info->window_text)); --+ } --+ --+ strlcat(video_info->window_text, --+ "Frames: ", --+ sizeof(video_info->window_text)); --+ --+ snprintf(frames_text, --+ sizeof(frames_text), --+ STRING_REP_UINT64, --+ (unsigned long long)video_info->frame_count); --+ --+ strlcat(video_info->window_text, --+ frames_text, --+ sizeof(video_info->window_text)); --+ ret = true; --+ } --+ --+ if (video_info->fps_text && video_info->fps_show) --+ snprintf( --+ video_info->fps_text, --+ sizeof(video_info->fps_text), --+ "FPS: %6.1f || %s: " STRING_REP_UINT64, --+ last_fps, --+ msg_hash_to_str(MSG_FRAMES), --+ (unsigned long long)video_info->frame_count); --+ --+ return ret; --+ } --+ --+ curr_time = fps_time = new_time; --+ strlcpy(video_info->window_text, --+ video_driver_title_buf, --+ sizeof(video_info->window_text)); --+ if (video_info->fps_text) --+ strlcpy(video_info->fps_text, --+ msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE), --+ sizeof(video_info->fps_text)); --+ --+ return true; --+} --+ --+/** -- * video_driver_frame: -- * @data : pointer to data of the video frame. -- * @width : width of the video frame. --@@ -2131,6 +2135,13 @@ void video_driver_frame(const void *data, unsigned width, -- -- video_driver_build_info(&video_info); -- --+ video_driver_threaded_lock(); --+ video_info.frame_count = video_driver_frame_count; --+ video_driver_frame_count++; --+ video_driver_threaded_unlock(); --+ --+ video_info.monitor_fps_enable = video_monitor_get_fps(&video_info); --+ -- /* Slightly messy code, -- * but we really need to do processing before blocking on VSync -- * for best possible scheduling. --@@ -2161,16 +2172,14 @@ void video_driver_frame(const void *data, unsigned width, -- && video_info.font_enable && msg) -- strlcpy(video_driver_msg, msg, sizeof(video_driver_msg)); -- --- video_driver_threaded_lock(); --- frame_count = video_driver_frame_count; --- video_driver_frame_count++; --- video_driver_threaded_unlock(); --- -- if (!current_video || !current_video->frame( -- video_driver_data, data, width, height, -- frame_count, --- pitch, video_driver_msg, video_info)) --+ pitch, video_driver_msg, &video_info)) -- video_driver_active = false; --+ --+ if (video_info.fps_show) --+ runloop_msg_queue_push(video_info.fps_text, 1, 1, false); -- } -- -- void video_driver_display_type_set(enum rarch_display_type type) --@@ -2245,6 +2254,10 @@ void video_driver_build_info(video_frame_info_t *video_info) -- video_info->monitor_index = settings->video.monitor_index; -- video_info->shared_context = settings->video.shared_context; -- video_info->font_enable = settings->video.font_enable; --+ --+ video_info->frame_count = 0; --+ video_info->window_text[0] = '\0'; --+ video_info->fps_text[0] = '\0'; -- } -- -- /** --diff --git a/gfx/video_driver.h b/gfx/video_driver.h --index 768b89660..906deea80 100644 ----- a/gfx/video_driver.h --+++ b/gfx/video_driver.h --@@ -101,6 +101,10 @@ typedef struct video_frame_info -- bool fullscreen; -- unsigned monitor_index; -- bool font_enable; --+ bool monitor_fps_enable; --+ char window_text[128]; --+ char fps_text[128]; --+ uint64_t frame_count; -- } video_frame_info_t; -- -- /* Optionally implemented interface to poke more --@@ -163,7 +167,7 @@ typedef struct video_viewport -- typedef bool (*video_driver_frame_t)(void *data, -- const void *frame, unsigned width, -- unsigned height, uint64_t frame_count, --- unsigned pitch, const char *msg, video_frame_info_t video_info); --+ unsigned pitch, const char *msg, video_frame_info_t *video_info); -- -- typedef struct video_driver -- { --@@ -462,25 +466,6 @@ void video_monitor_set_refresh_rate(float hz); -- bool video_monitor_fps_statistics(double *refresh_rate, -- double *deviation, unsigned *sample_points); -- ---/** --- * video_monitor_get_fps: --- * @video_info : information about the video frame --- * @buf : string suitable for Window title --- * @size : size of buffer. --- * @buf_fps : string of raw FPS only (optional). --- * @size_fps : size of raw FPS buffer. --- * --- * Get the amount of frames per seconds. --- * --- * Returns: true if framerate per seconds could be obtained, --- * otherwise false. --- * --- **/ ---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); -- -- const video_poke_interface_t *video_driver_get_poke(void); --diff --git a/gfx/video_thread_wrapper.c b/gfx/video_thread_wrapper.c --index ed868fb1d..0e1bb2c6f 100644 ----- a/gfx/video_thread_wrapper.c --+++ b/gfx/video_thread_wrapper.c --@@ -619,7 +619,7 @@ static void video_thread_loop(void *data) -- thr->frame.buffer, thr->frame.width, thr->frame.height, -- thr->frame.count, -- thr->frame.pitch, *thr->frame.msg ? thr->frame.msg : NULL, --- video_info); --+ &video_info); -- } -- -- slock_unlock(thr->frame.lock); --@@ -706,7 +706,7 @@ static bool video_thread_has_windowed(void *data) -- -- static bool video_thread_frame(void *data, const void *frame_, -- unsigned width, unsigned height, uint64_t frame_count, --- unsigned pitch, const char *msg, video_frame_info_t video_info) --+ unsigned pitch, const char *msg, video_frame_info_t *video_info) -- { -- unsigned copy_stride; -- static struct retro_perf_counter thr_frame = {0}; --@@ -741,7 +741,7 @@ static bool video_thread_frame(void *data, const void *frame_, -- { -- -- retro_time_t target_frame_time = (retro_time_t) --- roundf(1000000 / video_info.refresh_rate); --+ roundf(1000000 / video_info->refresh_rate); -- retro_time_t target = thr->last_time + target_frame_time; -- -- /* Ideally, use absolute time, but that is only a good idea on POSIX. */ diff --git a/gfx/common/x11_common.c b/gfx/common/x11_common.c index fb5e5d25b..a79c6037f 100644 --- a/gfx/common/x11_common.c @@ -3365,7 +996,7 @@ index b5412a189..6403d6ed3 100644 bool fullscreen) { diff --git a/gfx/drivers_context/cocoa_gl_ctx.m b/gfx/drivers_context/cocoa_gl_ctx.m -index 566869809..62b9c0a47 100644 +index 566869809..487638385 100644 --- a/gfx/drivers_context/cocoa_gl_ctx.m +++ b/gfx/drivers_context/cocoa_gl_ctx.m @@ -330,7 +330,7 @@ static void cocoagl_gfx_ctx_show_mouse(void *data, bool state) @@ -3419,15 +1050,6 @@ index 566869809..62b9c0a47 100644 { if (!(--g_fast_forward_skips < 0)) return; -@@ -631,7 +621,7 @@ const gfx_ctx_driver_t gfx_ctx_cocoagl = { - NULL, /* get_video_output_next */ - cocoagl_gfx_ctx_get_metrics, - NULL, -- cocoagl_gfx_ctx_update_window_title, -+ cocoagl_gfx_ctx_update_title, - cocoagl_gfx_ctx_check_window, - cocoagl_gfx_ctx_set_resize, - cocoagl_gfx_ctx_has_focus, diff --git a/gfx/drivers_context/d3d_ctx.cpp b/gfx/drivers_context/d3d_ctx.cpp index f5d4233bb..9c6acaaaf 100644 --- a/gfx/drivers_context/d3d_ctx.cpp