Move font_handle and font_driver ot the driver struct

This commit is contained in:
twinaphex 2015-04-25 00:32:01 +02:00
parent a79511e27f
commit 44a8b8bcd3
5 changed files with 29 additions and 35 deletions

View File

@ -29,6 +29,7 @@
#include "frontend/frontend_driver.h"
#include "ui/ui_companion_driver.h"
#include "gfx/video_driver.h"
#include "gfx/font_renderer_driver.h"
#include "audio/audio_driver.h"
#include "menu/menu_driver.h"
@ -201,7 +202,9 @@ typedef struct driver
const rarch_resampler_t *resampler;
const record_driver_t *recording;
struct retro_callbacks retro_ctx;
const struct font_renderer *font_osd_driver;
void *font_osd_data;
void *audio_data;
void *video_data;
void *video_context_data;

View File

@ -1478,17 +1478,15 @@ static INLINE void gl_draw_texture(gl_t *gl)
static bool gl_frame(void *data, const void *frame,
unsigned width, unsigned height, unsigned pitch, const char *msg)
{
const struct font_renderer *font_driver = NULL;
gl_t *gl = (gl_t*)data;
runloop_t *runloop = rarch_main_get_ptr();
driver_t *driver = driver_get_ptr();
settings_t *settings = config_get_ptr();
const struct font_renderer *font_driver = driver ? driver->font_osd_driver : NULL;
RARCH_PERFORMANCE_INIT(frame_run);
RARCH_PERFORMANCE_START(frame_run);
font_driver = (const struct font_renderer*)gl->font_driver;
context_bind_hw_render(gl, false);
#ifndef HAVE_OPENGLES
@ -1615,8 +1613,8 @@ static bool gl_frame(void *data, const void *frame,
gl_draw_texture(gl);
#endif
if (msg && font_driver && gl->font_handle)
font_driver->render_msg(gl->font_handle, msg, NULL);
if (msg && driver->font_osd_driver && driver->font_osd_data)
font_driver->render_msg(driver->font_osd_data, msg, NULL);
#ifdef HAVE_OVERLAY
if (gl->overlay_enable)
@ -1729,12 +1727,13 @@ static void gl_free_overlay(gl_t *gl)
static void gl_free(void *data)
{
gl_t *gl = (gl_t*)data;
driver_t *driver = driver_get_ptr();
const struct font_renderer *font_driver = NULL;
if (!gl)
return;
font_driver = (const struct font_renderer*)gl->font_driver;
font_driver = (const struct font_renderer*)driver->font_osd_driver;
context_bind_hw_render(gl, false);
@ -1753,8 +1752,8 @@ static void gl_free(void *data)
}
#endif
if (font_driver && gl->font_handle)
font_driver->free(gl->font_handle);
if (font_driver && driver->font_osd_data)
font_driver->free(driver->font_osd_data);
gl_shader_deinit(gl);
#ifndef NO_GL_FF_VERTEX
@ -2419,7 +2418,7 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo
if (settings->video.font_enable)
{
if (!font_init_first(&gl->font_driver, &gl->font_handle,
if (!font_init_first((const void**)&driver->font_osd_driver, &driver->font_osd_data,
gl, *settings->video.font_path
? settings->video.font_path : NULL, settings->video.font_size,
FONT_DRIVER_RENDER_OPENGL_API))
@ -3125,16 +3124,17 @@ static void gl_set_osd_msg(void *data, const char *msg,
const struct font_params *params, void *font)
{
const struct font_renderer *font_driver = NULL;
driver_t *driver = driver_get_ptr();
gl_t *gl = (gl_t*)data;
if (!gl)
return;
font_driver = (const struct font_renderer*)gl->font_driver;
font_driver = (const struct font_renderer*)driver->font_osd_driver;
if (font_driver && gl->font_handle)
if (driver->font_osd_driver && driver->font_osd_data)
{
context_bind_hw_render(gl, false);
font_driver->render_msg(font ? font : gl->font_handle, msg, params);
font_driver->render_msg(font ? font : driver->font_osd_data, msg, params);
context_bind_hw_render(gl, true);
}
}

View File

@ -319,10 +319,6 @@ typedef struct gl
bool have_es2_compat;
#endif
/* Fonts */
const void *font_driver;
void *font_handle;
bool egl_images;
video_info_t video_info;

View File

@ -443,6 +443,7 @@ static void glui_frame(void)
glui_handle_t *glui = NULL;
const char *core_name = NULL;
const char *core_version = NULL;
driver_t *driver = driver_get_ptr();
menu_handle_t *menu = menu_driver_get_ptr();
settings_t *settings = config_get_ptr();
const uint32_t normal_color = FONT_COLOR_ARGB_TO_RGBA(
@ -486,7 +487,7 @@ static void glui_frame(void)
menu->navigation.selection_ptr,
gl->win_width, glui->line_height, 1, 1, 1, 0.1);
font_driver = (const struct font_renderer*)gl->font_driver;
font_driver = driver->font_osd_driver;
menu_display_font_bind_block(menu, font_driver, &glui->list_block);
@ -624,6 +625,7 @@ static void glui_free(void *data)
gl_t *gl = NULL;
const struct font_renderer *font_driver = NULL;
menu_handle_t *menu = (menu_handle_t*)data;
driver_t *driver = driver_get_ptr();
glui_handle_t *glui = (glui_handle_t*)menu->userdata;
if (!glui || !menu)
@ -633,10 +635,10 @@ static void glui_free(void *data)
gl = (gl_t*)video_driver_get_ptr(NULL);
font_driver = gl ? (const struct font_renderer*)gl->font_driver : NULL;
font_driver = gl ? (const struct font_renderer*)driver->font_osd_driver : NULL;
if (font_driver && font_driver->bind_block)
font_driver->bind_block(gl->font_handle, NULL);
font_driver->bind_block(driver->font_osd_data, NULL);
if (menu->userdata)
free(menu->userdata);
@ -753,11 +755,9 @@ static void glui_context_reset(void)
{
gl_t *gl = NULL;
glui_handle_t *glui = NULL;
const font_renderer_driver_t *font_drv = NULL;
driver_t *driver = driver_get_ptr();
menu_handle_t *menu = menu_driver_get_ptr();
(void)font_drv;
if (!menu)
return;
@ -770,10 +770,8 @@ static void glui_context_reset(void)
if (!gl)
return;
font_drv = (const font_renderer_driver_t *)gl->font_driver;
menu_display_font_init_first(
&gl->font_driver,
(const void**)&driver->font_osd_driver,
&menu->font.buf,
gl,
NULL,

View File

@ -1571,15 +1571,11 @@ error:
static void xmb_free(void *data)
{
menu_handle_t *menu = (menu_handle_t*)data;
xmb_handle_t *xmb = NULL;
const struct font_renderer *font_driver = NULL;
gl_t *gl = (gl_t*)video_driver_get_ptr(NULL);
if (!gl)
return;
font_driver = (const struct font_renderer*)gl->font_driver;
menu_handle_t *menu = (menu_handle_t*)data;
driver_t *driver = driver_get_ptr();
const struct font_renderer *font_driver =
(const struct font_renderer*)driver->font_osd_driver;
if (menu && menu->userdata)
{
@ -1595,7 +1591,7 @@ static void xmb_free(void *data)
}
if (font_driver->bind_block)
font_driver->bind_block(gl->font_handle, NULL);
font_driver->bind_block(driver->font_osd_data, NULL);
}
static bool xmb_load_wallpaper(void *data)
@ -1640,6 +1636,7 @@ static void xmb_context_reset(void)
menu_handle_t *menu = menu_driver_get_ptr();
settings_t *settings = config_get_ptr();
global_t *global = global_get_ptr();
driver_t *driver = driver_get_ptr();
if (!menu)
return;
@ -1666,7 +1663,7 @@ static void xmb_context_reset(void)
fill_pathname_join(fontpath, themepath, "font.ttf", sizeof(fontpath));
menu_display_font_init_first(
&gl->font_driver,
(const void**)&driver->font_osd_driver,
&menu->font.buf,
gl,
fontpath,