From 0c51321099aa0043051b94325b7a22983dec84d2 Mon Sep 17 00:00:00 2001 From: libretroadmin Date: Thu, 15 Jun 2023 23:41:40 +0200 Subject: [PATCH] Get rid of font_driver_flush --- gfx/font_driver.c | 16 +++++----------- gfx/font_driver.h | 2 -- gfx/gfx_widgets.c | 3 ++- menu/drivers/materialui.c | 5 +++-- menu/drivers/ozone.c | 7 ++++--- menu/drivers/xmb.c | 6 ++++-- menu/menu_screensaver.c | 19 ++++++++++--------- 7 files changed, 28 insertions(+), 30 deletions(-) diff --git a/gfx/font_driver.c b/gfx/font_driver.c index 4793aa75d4..0f4591274d 100644 --- a/gfx/font_driver.c +++ b/gfx/font_driver.c @@ -674,6 +674,7 @@ static char* font_driver_reshape_msg(const char* msg, unsigned char *buffer, siz : buffer; unsigned char *dst = (unsigned char*)dst_buffer; + while (*src || reverse) { if (reverse) @@ -696,7 +697,7 @@ static char* font_driver_reshape_msg(const char* msg, unsigned char *buffer, siz else if (replacement < 0x800) { *dst++ = 0xC0 | (replacement >> 6); - *dst++ = 0x80 | (replacement & 0x3F); + *dst++ = 0x80 | (replacement & 0x3F); } else if (replacement < 0x10000) { @@ -705,14 +706,14 @@ static char* font_driver_reshape_msg(const char* msg, unsigned char *buffer, siz src -= 2; *dst++ = 0xE0 | ( replacement >> 12); - *dst++ = 0x80 | ((replacement >> 6) & 0x3F); - *dst++ = 0x80 | ( replacement & 0x3F); + *dst++ = 0x80 | ((replacement >> 6) & 0x3F); + *dst++ = 0x80 | ( replacement & 0x3F); } else { *dst++ = 0xF0 | (replacement >> 18); *dst++ = 0x80 | ((replacement >> 12) & 0x3F); - *dst++ = 0x80 | ((replacement >> 6) & 0x3F); + *dst++ = 0x80 | ((replacement >> 6) & 0x3F); *dst++ = 0x80 | ( replacement & 0x3F); } @@ -792,13 +793,6 @@ void font_driver_bind_block(void *font_data, void *block) font->renderer->bind_block(font->renderer_data, block); } -void font_driver_flush(unsigned width, unsigned height, void *font_data) -{ - font_data_t *font = (font_data_t*)(font_data ? font_data : video_font_driver); - if (font && font->renderer && font->renderer->flush) - font->renderer->flush(width, height, font->renderer_data); -} - int font_driver_get_message_width(void *font_data, const char *msg, size_t len, float scale) { diff --git a/gfx/font_driver.h b/gfx/font_driver.h index d4fa13aa00..97ec374823 100644 --- a/gfx/font_driver.h +++ b/gfx/font_driver.h @@ -86,8 +86,6 @@ void font_driver_bind_block(void *font_data, void *block); int font_driver_get_message_width(void *font_data, const char *msg, size_t len, float scale); -void font_driver_flush(unsigned width, unsigned height, void *font_data); - void font_driver_free(font_data_t *font); font_data_t *font_driver_init_first( diff --git a/gfx/gfx_widgets.c b/gfx/gfx_widgets.c index 8121947dcd..698fdf3ad6 100644 --- a/gfx/gfx_widgets.c +++ b/gfx/gfx_widgets.c @@ -668,7 +668,8 @@ void gfx_widgets_flush_text( if (!font_data || (font_data->usage_count == 0)) return; - font_driver_flush(video_width, video_height, font_data->font); + if (font_data->font && font_data->font->renderer && font_data->font->renderer->flush) + font_data->font->renderer->flush(video_width, video_height, font_data->font->renderer_data); font_data->raster_block.carr.coords.vertices = 0; font_data->usage_count = 0; } diff --git a/menu/drivers/materialui.c b/menu/drivers/materialui.c index bfd320cc09..2202d79115 100644 --- a/menu/drivers/materialui.c +++ b/menu/drivers/materialui.c @@ -2206,13 +2206,14 @@ static void INLINE materialui_font_unbind(materialui_font_data_t *font_data) /* Flushing is slow - only do it if font * has actually been used */ -void materialui_font_flush( +static void materialui_font_flush( unsigned video_width, unsigned video_height, materialui_font_data_t *font_data) { if (font_data->raster_block.carr.coords.vertices == 0) return; - font_driver_flush(video_width, video_height, font_data->font); + if (font_data->font && font_data->font->renderer && font_data->font->renderer->flush) + font_data->font->renderer->flush(video_width, video_height, font_data->font->renderer_data); font_data->raster_block.carr.coords.vertices = 0; } diff --git a/menu/drivers/ozone.c b/menu/drivers/ozone.c index ec64f15273..4a41defecc 100644 --- a/menu/drivers/ozone.c +++ b/menu/drivers/ozone.c @@ -339,8 +339,8 @@ typedef struct { font_data_t *font; video_font_raster_block_t raster_block; /* ptr alignment */ - int glyph_width; - int wideglyph_width; + unsigned glyph_width; + unsigned wideglyph_width; int line_height; int line_ascender; int line_centre_offset; @@ -2844,7 +2844,8 @@ static void ozone_font_flush( { if (font_data->raster_block.carr.coords.vertices == 0) return; - font_driver_flush(video_width, video_height, font_data->font); + if (font_data->font && font_data->font->renderer && font_data->font->renderer->flush) + font_data->font->renderer->flush(video_width, video_height, font_data->font->renderer_data); font_data->raster_block.carr.coords.vertices = 0; } diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index e63ea0e023..7afc5e2878 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -6336,8 +6336,10 @@ static void xmb_frame(void *data, video_frame_info_t *video_info) if (dispctx && dispctx->blend_end) dispctx->blend_end(userdata); - font_driver_flush(video_width, video_height, xmb->font); - font_driver_flush(video_width, video_height, xmb->font2); + if (xmb->font && xmb->font->renderer && xmb->font->renderer->flush) + xmb->font->renderer->flush(video_width, video_height, xmb->font->renderer_data); + if (xmb->font2 && xmb->font2->renderer && xmb->font2->renderer->flush) + xmb->font2->renderer->flush(video_width, video_height, xmb->font2->renderer_data); font_driver_bind_block(xmb->font, NULL); font_driver_bind_block(xmb->font2, NULL); diff --git a/menu/menu_screensaver.c b/menu/menu_screensaver.c index a450971cb9..3080959cd9 100644 --- a/menu/menu_screensaver.c +++ b/menu/menu_screensaver.c @@ -753,13 +753,14 @@ void menu_screensaver_frame(menu_screensaver_t *screensaver, unsigned video_height; video_driver_state_t *video_st = video_state_get_ptr(); void *userdata = NULL; - + font_data_t *font = NULL; if (!screensaver) return; - video_width = video_info->width; - video_height = video_info->height; - userdata = video_info->userdata; + font = screensaver->font_data.font; + video_width = video_info->width; + video_height = video_info->height; + userdata = video_info->userdata; /* Set viewport */ if (video_st->current_video && video_st->current_video->set_viewport) @@ -779,11 +780,10 @@ void menu_screensaver_frame(menu_screensaver_t *screensaver, NULL); /* Draw particle effect, if required */ - if ((screensaver->effect != MENU_SCREENSAVER_BLANK) && - screensaver->font_data.font && - screensaver->particles) + if ( (screensaver->effect != MENU_SCREENSAVER_BLANK) + && font + && screensaver->particles) { - font_data_t *font = screensaver->font_data.font; float y_centre_offset = screensaver->font_data.y_centre_offset; float particle_scale = screensaver->particle_scale; size_t i; @@ -812,7 +812,8 @@ void menu_screensaver_frame(menu_screensaver_t *screensaver, /* Flush text and unbind font */ if (screensaver->font_data.raster_block.carr.coords.vertices != 0) { - font_driver_flush(video_width, video_height, font); + if (font->renderer && font->renderer->flush) + font->renderer->flush(video_width, video_height, font->renderer_data); screensaver->font_data.raster_block.carr.coords.vertices = 0; } font_driver_bind_block(font, NULL);