From bd63de9b3a5ad35b7b9468cddc2a68f1ee49091a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 21 Apr 2015 17:33:00 +0200 Subject: [PATCH] Replace gl_font_init_first and d3d_font_init_first with common function --- gfx/drivers/gl.c | 5 +++-- gfx/font_driver.c | 31 +++++++++++++++++++++++++++++-- gfx/font_driver.h | 20 ++++++++++---------- gfx/video_thread_wrapper.c | 3 ++- gfx/video_thread_wrapper.h | 4 +++- menu/drivers/glui.c | 8 +++++--- menu/drivers/xmb.c | 7 ++++--- 7 files changed, 56 insertions(+), 22 deletions(-) diff --git a/gfx/drivers/gl.c b/gfx/drivers/gl.c index 4653c9e5d1..237093bc85 100644 --- a/gfx/drivers/gl.c +++ b/gfx/drivers/gl.c @@ -2419,9 +2419,10 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo if (settings->video.font_enable) { - if (!gl_font_init_first(&gl->font_driver, &gl->font_handle, + if (!font_init_first(&gl->font_driver, &gl->font_handle, gl, *settings->video.font_path - ? settings->video.font_path : NULL, settings->video.font_size)) + ? settings->video.font_path : NULL, settings->video.font_size, + FONT_DRIVER_RENDER_OPENGL_API)) RARCH_ERR("[GL]: Failed to initialize font renderer.\n"); } diff --git a/gfx/font_driver.c b/gfx/font_driver.c index fb658ef4a4..72bcf5aead 100644 --- a/gfx/font_driver.c +++ b/gfx/font_driver.c @@ -29,7 +29,7 @@ static const font_renderer_t *d3d_font_backends[] = { #endif }; -bool d3d_font_init_first( +static bool d3d_font_init_first( const void **font_driver, void **font_handle, void *video_data, const char *font_path, float font_size) { @@ -62,7 +62,8 @@ static const font_renderer_t *gl_font_backends[] = { NULL, }; -bool gl_font_init_first(const void **font_driver, void **font_handle, +static bool gl_font_init_first( + const void **font_driver, void **font_handle, void *video_data, const char *font_path, float font_size) { unsigned i; @@ -82,3 +83,29 @@ bool gl_font_init_first(const void **font_driver, void **font_handle, return false; } #endif + +bool font_init_first(const void **font_driver, void **font_handle, + void *video_data, const char *font_path, float font_size, + enum font_driver_render_api api) +{ + switch (api) + { +#ifdef HAVE_D3D + case FONT_DRIVER_RENDER_DIRECT3D_API: + return d3d_font_init_first(font_driver, font_handle, + video_data, font_path, font_size); +#endif +#ifdef HAVE_OPENGL + case FONT_DRIVER_RENDER_OPENGL_API: + return gl_font_init_first(font_driver, font_handle, + video_data, font_path, font_size); +#endif + case FONT_DRIVER_RENDER_DONT_CARE: + /* TODO/FIXME - lookup graphics driver's 'API' */ + break; + default: + break; + } + + return false; +} diff --git a/gfx/font_driver.h b/gfx/font_driver.h index 5e02697293..d47ce831d9 100644 --- a/gfx/font_driver.h +++ b/gfx/font_driver.h @@ -25,17 +25,17 @@ extern "C" { #endif -#ifdef HAVE_D3D -bool d3d_font_init_first( - const void **font_driver, void **font_handle, - void *video_data, const char *font_path, float font_size); -#endif +enum font_driver_render_api +{ + FONT_DRIVER_RENDER_DONT_CARE, + FONT_DRIVER_RENDER_OPENGL_API, + FONT_DRIVER_RENDER_DIRECT3D_API, +}; -#ifdef HAVE_OPENGL -bool gl_font_init_first(const void **font_driver, - void **font_handle, void *gl_data, - const char *font_path, float font_size); -#endif +bool font_init_first( + const void **font_driver, void **font_handle, + void *video_data, const char *font_path, float font_size, + enum font_driver_render_api api); #ifdef __cplusplus } diff --git a/gfx/video_thread_wrapper.c b/gfx/video_thread_wrapper.c index 8f1418f542..bd9dd4914e 100644 --- a/gfx/video_thread_wrapper.c +++ b/gfx/video_thread_wrapper.c @@ -307,7 +307,8 @@ static void thread_loop(void *data) thr->cmd_data.font_init.font_handle, thr->cmd_data.font_init.video_data, thr->cmd_data.font_init.font_path, - thr->cmd_data.font_init.font_size); + thr->cmd_data.font_init.font_size, + thr->cmd_data.font_init.api); thread_reply(thr, CMD_FONT_INIT); break; diff --git a/gfx/video_thread_wrapper.h b/gfx/video_thread_wrapper.h index f2d4bacdef..c07f0627d5 100644 --- a/gfx/video_thread_wrapper.h +++ b/gfx/video_thread_wrapper.h @@ -21,6 +21,7 @@ #include "../general.h" #include #include +#include "font_driver.h" enum thread_cmd { @@ -173,13 +174,14 @@ typedef struct thread_video { bool (*method)(const void **font_driver, void **font_handle, void *video_data, const char *font_path, - float font_size); + float font_size, enum font_driver_render_api api); const void **font_driver; void **font_handle; void *video_data; const char *font_path; float font_size; bool return_value; + enum font_driver_render_api api; } font_init; } cmd_data; diff --git a/menu/drivers/glui.c b/menu/drivers/glui.c index 37b912d15b..3581618256 100644 --- a/menu/drivers/glui.c +++ b/menu/drivers/glui.c @@ -785,20 +785,22 @@ static bool glui_font_init_first(const void **font_driver, if (!thr) return false; - thr->cmd_data.font_init.method = gl_font_init_first; + thr->cmd_data.font_init.method = font_init_first; thr->cmd_data.font_init.font_driver = (const void**)font_driver; thr->cmd_data.font_init.font_handle = font_handle; thr->cmd_data.font_init.video_data = video_data; thr->cmd_data.font_init.font_path = font_path; thr->cmd_data.font_init.font_size = font_size; + thr->cmd_data.font_init.api = FONT_DRIVER_RENDER_OPENGL_API; + thr->send_cmd_func(thr, CMD_FONT_INIT); thr->wait_reply_func(thr, CMD_FONT_INIT); return thr->cmd_data.font_init.return_value; } - return gl_font_init_first(font_driver, font_handle, video_data, - font_path, font_size); + return font_init_first(font_driver, font_handle, video_data, + font_path, font_size, FONT_DRIVER_RENDER_OPENGL_API); } static void glui_context_reset(void) diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index 945a982322..1bc4826723 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -1626,12 +1626,13 @@ static bool xmb_font_init_first(const void **font_driver, if (!thr) return false; - thr->cmd_data.font_init.method = gl_font_init_first; + thr->cmd_data.font_init.method = font_init_first; thr->cmd_data.font_init.font_driver = (const void**)font_driver; thr->cmd_data.font_init.font_handle = font_handle; thr->cmd_data.font_init.video_data = video_data; thr->cmd_data.font_init.font_path = font_path; thr->cmd_data.font_init.font_size = xmb_font_size; + thr->cmd_data.font_init.api = FONT_DRIVER_RENDER_OPENGL_API; thr->send_cmd_func(thr, CMD_FONT_INIT); thr->wait_reply_func(thr, CMD_FONT_INIT); @@ -1639,8 +1640,8 @@ static bool xmb_font_init_first(const void **font_driver, return thr->cmd_data.font_init.return_value; } - return gl_font_init_first(font_driver, font_handle, video_data, - font_path, xmb_font_size); + return font_init_first(font_driver, font_handle, video_data, + font_path, xmb_font_size, FONT_DRIVER_RENDER_OPENGL_API); } static bool xmb_load_wallpaper(void *data)