From 34852e159aadc583fc3d8e43e16272955f41ca02 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 23 Apr 2017 22:20:11 +0200 Subject: [PATCH] Cut down on amount of times video_driver_build_info is called --- gfx/drivers/caca_gfx.c | 8 ++++---- gfx/drivers/ctr_gfx.c | 9 ++++----- gfx/drivers/d3d.cpp | 9 ++++----- gfx/drivers/gdi_gfx.c | 8 ++++---- gfx/drivers/gl.c | 8 ++++---- gfx/drivers/sdl2_gfx.c | 4 +++- gfx/drivers/vga_gfx.c | 8 ++++---- gfx/drivers/vita2d_gfx.c | 8 ++++---- gfx/drivers/vulkan.c | 8 ++++---- gfx/drivers/wiiu_gfx.c | 8 ++++---- gfx/drivers/xshm_gfx.c | 4 +++- gfx/drivers/xvideo.c | 3 --- gfx/video_driver.c | 4 +++- gfx/video_driver.h | 3 ++- gfx/video_thread_wrapper.c | 19 +++++++++++++------ 15 files changed, 60 insertions(+), 51 deletions(-) diff --git a/gfx/drivers/caca_gfx.c b/gfx/drivers/caca_gfx.c index 0e4885133d..b5e5e6d21c 100644 --- a/gfx/drivers/caca_gfx.c +++ b/gfx/drivers/caca_gfx.c @@ -295,12 +295,12 @@ static void caca_set_texture_frame(void *data, memcpy(caca_menu_frame, frame, pitch * height); } -static void caca_set_osd_msg(void *data, const char *msg, +static void caca_set_osd_msg(void *data, + video_frame_info_t *video_info, + const char *msg, const void *params, void *font) { - video_frame_info_t video_info; - video_driver_build_info(&video_info); - font_driver_render_msg(&video_info, font, msg, params); + font_driver_render_msg(video_info, font, msg, params); } static const video_poke_interface_t caca_poke_interface = { diff --git a/gfx/drivers/ctr_gfx.c b/gfx/drivers/ctr_gfx.c index 65d8fbb86c..688b30a982 100644 --- a/gfx/drivers/ctr_gfx.c +++ b/gfx/drivers/ctr_gfx.c @@ -1122,16 +1122,15 @@ static void ctr_unload_texture(void *data, uintptr_t handle) free(texture); } -static void ctr_set_osd_msg(void *data, const char *msg, +static void ctr_set_osd_msg(void *data, + video_frame_info_t *video_info, + const char *msg, const void *params, void *font) { - video_frame_info_t video_info; ctr_video_t* ctr = (ctr_video_t*)data; - video_driver_build_info(&video_info); - if (ctr && ctr->msg_rendering_enabled) - font_driver_render_msg(&video_info, font, msg, params); + font_driver_render_msg(video_info, font, msg, params); } static const video_poke_interface_t ctr_poke_interface = { diff --git a/gfx/drivers/d3d.cpp b/gfx/drivers/d3d.cpp index cc35d7090f..d21876624e 100644 --- a/gfx/drivers/d3d.cpp +++ b/gfx/drivers/d3d.cpp @@ -960,18 +960,17 @@ static void d3d_apply_state_changes(void *data) d3d->should_resize = true; } -static void d3d_set_osd_msg(void *data, const char *msg, +static void d3d_set_osd_msg(void *data, + video_frame_info_t *video_info, + const char *msg, const void *params, void *font) { - video_frame_info_t video_info; d3d_video_t *d3d = (d3d_video_t*)data; - video_driver_build_info(&video_info); - if (d3d->renderchain_driver->set_font_rect && params) d3d->renderchain_driver->set_font_rect(d3d, params); - font_driver_render_msg(&video_info, NULL, msg, params); + font_driver_render_msg(video_info, NULL, msg, params); } /* Delay constructor due to lack of exceptions. */ diff --git a/gfx/drivers/gdi_gfx.c b/gfx/drivers/gdi_gfx.c index f83221910c..51448d1661 100644 --- a/gfx/drivers/gdi_gfx.c +++ b/gfx/drivers/gdi_gfx.c @@ -403,12 +403,12 @@ static void gdi_set_texture_frame(void *data, } } -static void gdi_set_osd_msg(void *data, const char *msg, +static void gdi_set_osd_msg(void *data, + video_frame_info_t *video_info, + const char *msg, const void *params, void *font) { - video_frame_info_t video_info; - video_driver_build_info(&video_info); - font_driver_render_msg(&video_info, font, msg, params); + font_driver_render_msg(video_info, font, msg, params); } static void gdi_get_video_output_size(void *data, diff --git a/gfx/drivers/gl.c b/gfx/drivers/gl.c index afda2d1327..4d72f3f9de 100644 --- a/gfx/drivers/gl.c +++ b/gfx/drivers/gl.c @@ -962,12 +962,12 @@ static void gl_set_texture_enable(void *data, bool state, bool full_screen) gl->menu_texture_full_screen = full_screen; } -static void gl_set_osd_msg(void *data, const char *msg, +static void gl_set_osd_msg(void *data, + video_frame_info_t *video_info, + const char *msg, const void *params, void *font) { - video_frame_info_t video_info; - video_driver_build_info(&video_info); - font_driver_render_msg(&video_info, font, msg, params); + font_driver_render_msg(video_info, font, msg, params); } static void gl_show_mouse(void *data, bool state) diff --git a/gfx/drivers/sdl2_gfx.c b/gfx/drivers/sdl2_gfx.c index 6849396a91..8b70140cf5 100644 --- a/gfx/drivers/sdl2_gfx.c +++ b/gfx/drivers/sdl2_gfx.c @@ -707,7 +707,9 @@ static void sdl2_poke_texture_enable(void *data, bool enable, bool full_screen) vid->menu.active = enable; } -static void sdl2_poke_set_osd_msg(void *data, const char *msg, +static void sdl2_poke_set_osd_msg(void *data, + video_frame_info_t *video_info, + const char *msg, const void *params, void *font) { sdl2_video_t *vid = (sdl2_video_t*)data; diff --git a/gfx/drivers/vga_gfx.c b/gfx/drivers/vga_gfx.c index 5f8a89c31c..1214e6574e 100644 --- a/gfx/drivers/vga_gfx.c +++ b/gfx/drivers/vga_gfx.c @@ -387,12 +387,12 @@ static void vga_set_texture_frame(void *data, } } -static void vga_set_osd_msg(void *data, const char *msg, +static void vga_set_osd_msg(void *data, + video_frame_info_t *video_info, + const char *msg, const void *params, void *font) { - video_frame_info_t video_info; - video_driver_build_info(&video_info); - font_driver_render_msg(&video_info, font, msg, params); + font_driver_render_msg(video_info, font, msg, params); } static const video_poke_interface_t vga_poke_interface = { diff --git a/gfx/drivers/vita2d_gfx.c b/gfx/drivers/vita2d_gfx.c index b4a232ffb9..0a6a52bfe6 100644 --- a/gfx/drivers/vita2d_gfx.c +++ b/gfx/drivers/vita2d_gfx.c @@ -748,12 +748,12 @@ static void vita_unload_texture(void *data, uintptr_t handle) //free(texture); } -static void vita_set_osd_msg(void *data, const char *msg, +static void vita_set_osd_msg(void *data, + video_frame_info_t *video_info, + const char *msg, const void *params, void *font) { - video_frame_info_t video_info; - video_driver_build_info(&video_info); - font_driver_render_msg(&video_info, font, msg, params); + font_driver_render_msg(video_info, font, msg, params); } static bool vita_get_current_sw_framebuffer(void *data, diff --git a/gfx/drivers/vulkan.c b/gfx/drivers/vulkan.c index 76c8f47a51..d77d962b7b 100644 --- a/gfx/drivers/vulkan.c +++ b/gfx/drivers/vulkan.c @@ -2227,12 +2227,12 @@ static void vulkan_set_texture_enable(void *data, bool state, bool full_screen) vk->menu.full_screen = full_screen; } -static void vulkan_set_osd_msg(void *data, const char *msg, +static void vulkan_set_osd_msg(void *data, + video_frame_info_t *video_info, + const char *msg, const void *params, void *font) { - video_frame_info_t video_info; - video_driver_build_info(&video_info); - font_driver_render_msg(&video_info, font, msg, params); + font_driver_render_msg(video_info, font, msg, params); } #endif diff --git a/gfx/drivers/wiiu_gfx.c b/gfx/drivers/wiiu_gfx.c index c9f07eb8f1..509c7d46d2 100644 --- a/gfx/drivers/wiiu_gfx.c +++ b/gfx/drivers/wiiu_gfx.c @@ -851,13 +851,13 @@ static void wiiu_gfx_set_texture_enable(void* data, bool state, bool full_screen } -static void wiiu_gfx_set_osd_msg(void* data, const char* msg, - const void* params, void* font) +static void wiiu_gfx_set_osd_msg(void* data, + video_frame_info_t *video_info, + const char* msg, + const void* params, void* font) { } - - static const video_poke_interface_t wiiu_poke_interface = { wiiu_gfx_load_texture, diff --git a/gfx/drivers/xshm_gfx.c b/gfx/drivers/xshm_gfx.c index b283121211..561b20726f 100644 --- a/gfx/drivers/xshm_gfx.c +++ b/gfx/drivers/xshm_gfx.c @@ -190,7 +190,9 @@ static void xshm_poke_texture_enable(void *data, bool enable, bool full_screen) } -static void xshm_poke_set_osd_msg(void *data, const char *msg, +static void xshm_poke_set_osd_msg(void *data, + video_frame_info_t *video_info, + const char *msg, const struct font_params *params, void *font) { diff --git a/gfx/drivers/xvideo.c b/gfx/drivers/xvideo.c index fbd598a464..1277e22aaf 100644 --- a/gfx/drivers/xvideo.c +++ b/gfx/drivers/xvideo.c @@ -421,7 +421,6 @@ static void *xv_init(const video_info_t *video, { unsigned i; XWindowAttributes target; - video_frame_info_t video_info; char buf[128] = {0}; char title[128] = {0}; XSetWindowAttributes attributes = {0}; @@ -538,8 +537,6 @@ static void *xv_init(const video_info_t *video, XMapWindow(g_x11_dpy, g_x11_win); - video_driver_build_info(&video_info); - video_driver_get_window_title(title, sizeof(title)); if (title[0]) diff --git a/gfx/video_driver.c b/gfx/video_driver.c index 550c12c5e1..4864c65d4c 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -912,8 +912,10 @@ bool video_driver_get_video_output_size(unsigned *width, unsigned *height) void video_driver_set_osd_msg(const char *msg, const void *data, void *font) { + video_frame_info_t video_info; + video_driver_build_info(&video_info); if (video_driver_poke && video_driver_poke->set_osd_msg) - video_driver_poke->set_osd_msg(video_driver_data, msg, data, font); + video_driver_poke->set_osd_msg(video_driver_data, &video_info, msg, data, font); } void video_driver_set_texture_enable(bool enable, bool fullscreen) diff --git a/gfx/video_driver.h b/gfx/video_driver.h index bb86cab17f..cdbbccce47 100644 --- a/gfx/video_driver.h +++ b/gfx/video_driver.h @@ -193,7 +193,8 @@ typedef struct video_poke_interface #endif /* Enable or disable rendering. */ void (*set_texture_enable)(void *data, bool enable, bool full_screen); - void (*set_osd_msg)(void *data, const char *msg, + void (*set_osd_msg)(void *data, video_frame_info_t *video_info, + const char *msg, const void *params, void *font); void (*show_mouse)(void *data, bool state); diff --git a/gfx/video_thread_wrapper.c b/gfx/video_thread_wrapper.c index 729cc35186..4475522180 100644 --- a/gfx/video_thread_wrapper.c +++ b/gfx/video_thread_wrapper.c @@ -532,10 +532,15 @@ static bool video_thread_handle_packet( break; case CMD_POKE_SET_OSD_MSG: - if (thr->poke && thr->poke->set_osd_msg) - thr->poke->set_osd_msg(thr->driver_data, - pkt.data.osd_message.msg, - &pkt.data.osd_message.params, NULL); + { + video_frame_info_t video_info; + video_driver_build_info(&video_info); + if (thr->poke && thr->poke->set_osd_msg) + thr->poke->set_osd_msg(thr->driver_data, + &video_info, + pkt.data.osd_message.msg, + &pkt.data.osd_message.params, NULL); + } video_thread_reply(thr, &pkt); break; @@ -1205,7 +1210,9 @@ static void thread_set_texture_enable(void *data, bool state, bool full_screen) slock_unlock(thr->frame.lock); } -static void thread_set_osd_msg(void *data, const char *msg, +static void thread_set_osd_msg(void *data, + video_frame_info_t *video_info, + const char *msg, const void *params, void *font) { thread_video_t *thr = (thread_video_t*)data; @@ -1216,7 +1223,7 @@ static void thread_set_osd_msg(void *data, const char *msg, /* TODO : find a way to determine if the calling * thread is the driver thread or not. */ if (thr->poke && thr->poke->set_osd_msg) - thr->poke->set_osd_msg(thr->driver_data, msg, params, font); + thr->poke->set_osd_msg(thr->driver_data, video_info, msg, params, font); } #endif