Take font driver handles out of driver_t struct
This commit is contained in:
parent
612c05ac71
commit
6a00c1cf9a
3
driver.h
3
driver.h
|
@ -194,9 +194,6 @@ typedef struct driver
|
||||||
const location_driver_t *location;
|
const location_driver_t *location;
|
||||||
const record_driver_t *recording;
|
const record_driver_t *recording;
|
||||||
struct retro_callbacks retro_ctx;
|
struct retro_callbacks retro_ctx;
|
||||||
const struct font_renderer *font_osd_driver;
|
|
||||||
|
|
||||||
void *font_osd_data;
|
|
||||||
void *camera_data;
|
void *camera_data;
|
||||||
void *location_data;
|
void *location_data;
|
||||||
void *recording_data;
|
void *recording_data;
|
||||||
|
|
|
@ -33,15 +33,18 @@ static const font_renderer_driver_t *font_backends[] = {
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const struct font_renderer *font_osd_driver;
|
||||||
|
|
||||||
|
static void *font_osd_data;
|
||||||
|
|
||||||
int font_renderer_get_message_width(const char *msg, float scale)
|
int font_renderer_get_message_width(const char *msg, float scale)
|
||||||
{
|
{
|
||||||
driver_t *driver = driver_get_ptr();
|
const struct font_renderer *font_driver = font_osd_driver;
|
||||||
const struct font_renderer *font_driver = driver ? driver->font_osd_driver : NULL;
|
|
||||||
|
|
||||||
if (!font_driver || !font_driver->get_message_width)
|
if (!font_driver || !font_driver->get_message_width)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return font_driver->get_message_width(driver->font_osd_data, msg, strlen(msg), scale);
|
return font_driver->get_message_width(font_osd_data, msg, strlen(msg), scale);
|
||||||
}
|
}
|
||||||
|
|
||||||
int font_renderer_create_default(const void **data, void **handle,
|
int font_renderer_create_default(const void **data, void **handle,
|
||||||
|
@ -207,8 +210,7 @@ bool font_init_first(const void **font_driver, void **font_handle,
|
||||||
|
|
||||||
bool font_driver_has_render_msg(void)
|
bool font_driver_has_render_msg(void)
|
||||||
{
|
{
|
||||||
driver_t *driver = driver_get_ptr();
|
const font_renderer_t *font_ctx = font_osd_driver;
|
||||||
const font_renderer_t *font_ctx = driver->font_osd_driver;
|
|
||||||
if (!font_ctx || !font_ctx->render_msg)
|
if (!font_ctx || !font_ctx->render_msg)
|
||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
|
@ -216,18 +218,16 @@ bool font_driver_has_render_msg(void)
|
||||||
|
|
||||||
void font_driver_render_msg(void *font_data, const char *msg, const struct font_params *params)
|
void font_driver_render_msg(void *font_data, const char *msg, const struct font_params *params)
|
||||||
{
|
{
|
||||||
driver_t *driver = driver_get_ptr();
|
const font_renderer_t *font_ctx = font_osd_driver;
|
||||||
const font_renderer_t *font_ctx = driver->font_osd_driver;
|
|
||||||
|
|
||||||
if (font_ctx->render_msg)
|
if (font_ctx->render_msg)
|
||||||
font_ctx->render_msg(font_data ? font_data : driver->font_osd_data, msg, params);
|
font_ctx->render_msg(font_data ? font_data : font_osd_data, msg, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
void font_driver_bind_block(void *font_data, void *block)
|
void font_driver_bind_block(void *font_data, void *block)
|
||||||
{
|
{
|
||||||
driver_t *driver = driver_get_ptr();
|
const font_renderer_t *font_ctx = font_osd_driver;
|
||||||
const font_renderer_t *font_ctx = driver->font_osd_driver;
|
void *new_font_data = font_data ? font_data : font_osd_data;
|
||||||
void *new_font_data = font_data ? font_data : driver->font_osd_data;
|
|
||||||
|
|
||||||
if (font_ctx->bind_block)
|
if (font_ctx->bind_block)
|
||||||
font_ctx->bind_block(new_font_data, block);
|
font_ctx->bind_block(new_font_data, block);
|
||||||
|
@ -235,8 +235,7 @@ void font_driver_bind_block(void *font_data, void *block)
|
||||||
|
|
||||||
void font_driver_flush(void *data)
|
void font_driver_flush(void *data)
|
||||||
{
|
{
|
||||||
driver_t *driver = driver_get_ptr();
|
const font_renderer_t *font_ctx = font_osd_driver;
|
||||||
const font_renderer_t *font_ctx = driver->font_osd_driver;
|
|
||||||
|
|
||||||
if (font_ctx->flush)
|
if (font_ctx->flush)
|
||||||
font_ctx->flush(data);
|
font_ctx->flush(data);
|
||||||
|
@ -244,8 +243,7 @@ void font_driver_flush(void *data)
|
||||||
|
|
||||||
int font_driver_get_message_width(void *data, const char *msg, unsigned len, float scale)
|
int font_driver_get_message_width(void *data, const char *msg, unsigned len, float scale)
|
||||||
{
|
{
|
||||||
driver_t *driver = driver_get_ptr();
|
const font_renderer_t *font_ctx = font_osd_driver;
|
||||||
const font_renderer_t *font_ctx = driver->font_osd_driver;
|
|
||||||
|
|
||||||
if (!font_ctx || !font_ctx->get_message_width)
|
if (!font_ctx || !font_ctx->get_message_width)
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -254,17 +252,16 @@ int font_driver_get_message_width(void *data, const char *msg, unsigned len, flo
|
||||||
|
|
||||||
void font_driver_free(void *data)
|
void font_driver_free(void *data)
|
||||||
{
|
{
|
||||||
driver_t *driver = driver_get_ptr();
|
const font_renderer_t *font_ctx = (const font_renderer_t*)font_osd_driver;
|
||||||
const font_renderer_t *font_ctx = (const font_renderer_t*)driver->font_osd_driver;
|
|
||||||
|
|
||||||
if (font_ctx->free)
|
if (font_ctx->free)
|
||||||
font_ctx->free(data ? data : driver->font_osd_data);
|
font_ctx->free(data ? data : font_osd_data);
|
||||||
|
|
||||||
if (data)
|
if (data)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
driver->font_osd_data = NULL;
|
font_osd_data = NULL;
|
||||||
driver->font_osd_driver = NULL;
|
font_osd_driver = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool font_driver_init_first(const void **font_driver, void *font_handle,
|
bool font_driver_init_first(const void **font_driver, void *font_handle,
|
||||||
|
@ -275,11 +272,10 @@ bool font_driver_init_first(const void **font_driver, void *font_handle,
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
const struct retro_hw_render_callback *hw_render =
|
const struct retro_hw_render_callback *hw_render =
|
||||||
(const struct retro_hw_render_callback*)video_driver_callback();
|
(const struct retro_hw_render_callback*)video_driver_callback();
|
||||||
driver_t *driver = driver_get_ptr();
|
|
||||||
const void **new_font_driver = font_driver ? font_driver
|
const void **new_font_driver = font_driver ? font_driver
|
||||||
: (const void**)&driver->font_osd_driver;
|
: (const void**)&font_osd_driver;
|
||||||
void *new_font_handle = font_handle ? font_handle
|
void *new_font_handle = font_handle ? font_handle
|
||||||
: &driver->font_osd_data;
|
: &font_osd_data;
|
||||||
|
|
||||||
if (threading_hint && settings->video.threaded && !hw_render->context_type)
|
if (threading_hint && settings->video.threaded && !hw_render->context_type)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue