[vlc-commits] freetype: don't store hb_font

Francois Cartegnie git at videolan.org
Sat Jul 25 01:11:39 CEST 2020


vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Fri Jul 24 15:07:23 2020 +0200| [8da7ca411fa3d883c27fd66710b12f04ac03bd13] | committer: Francois Cartegnie

freetype: don't store hb_font

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=8da7ca411fa3d883c27fd66710b12f04ac03bd13
---

 modules/text_renderer/freetype/text_layout.c | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/modules/text_renderer/freetype/text_layout.c b/modules/text_renderer/freetype/text_layout.c
index 43a712f722..b8d6756837 100644
--- a/modules/text_renderer/freetype/text_layout.c
+++ b/modules/text_renderer/freetype/text_layout.c
@@ -107,7 +107,6 @@ typedef struct run_desc_t
 #ifdef HAVE_HARFBUZZ
     hb_script_t                 script;
     hb_direction_t              direction;
-    hb_font_t                  *p_hb_font;
     hb_buffer_t                *p_buffer;
     hb_glyph_info_t            *p_glyph_infos;
     hb_glyph_position_t        *p_glyph_positions;
@@ -763,8 +762,8 @@ static int ShapeParagraphHarfBuzz( filter_t *p_filter,
         else
             p_face = p_run->p_face;
 
-        p_run->p_hb_font = hb_ft_font_create( p_face, 0 );
-        if( !p_run->p_hb_font )
+        hb_font_t *p_hb_font = hb_ft_font_create( p_face, 0 );
+        if( !p_hb_font )
         {
             msg_Err( p_filter,
                      "ShapeParagraphHarfBuzz(): hb_ft_font_create() error" );
@@ -776,6 +775,7 @@ static int ShapeParagraphHarfBuzz( filter_t *p_filter,
         {
             msg_Err( p_filter,
                      "ShapeParagraphHarfBuzz(): hb_buffer_create() error" );
+            hb_font_destroy( p_hb_font );
             goto error;
         }
 
@@ -792,12 +792,14 @@ static int ShapeParagraphHarfBuzz( filter_t *p_filter,
                              p_run->i_end_offset - p_run->i_start_offset, 0,
                              p_run->i_end_offset - p_run->i_start_offset );
 #endif
-        hb_shape( p_run->p_hb_font, p_run->p_buffer, 0, 0 );
+        hb_shape( p_hb_font, p_run->p_buffer, 0, 0 );
         p_run->p_glyph_infos =
             hb_buffer_get_glyph_infos( p_run->p_buffer, &p_run->i_glyph_count );
         p_run->p_glyph_positions =
             hb_buffer_get_glyph_positions( p_run->p_buffer, &p_run->i_glyph_count );
 
+        hb_font_destroy( p_hb_font );
+
         if( p_run->i_glyph_count <= 0 )
         {
             msg_Err( p_filter,
@@ -876,7 +878,6 @@ static int ShapeParagraphHarfBuzz( filter_t *p_filter,
 
     for( int i = 0; i < p_paragraph->i_runs_count; ++i )
     {
-        hb_font_destroy( p_paragraph->p_runs[ i ].p_hb_font );
         hb_buffer_destroy( p_paragraph->p_runs[ i ].p_buffer );
     }
     FreeParagraph( *p_old_paragraph );
@@ -887,8 +888,6 @@ static int ShapeParagraphHarfBuzz( filter_t *p_filter,
 error:
     for( int i = 0; i < p_paragraph->i_runs_count; ++i )
     {
-        if( p_paragraph->p_runs[ i ].p_hb_font )
-            hb_font_destroy( p_paragraph->p_runs[ i ].p_hb_font );
         if( p_paragraph->p_runs[ i ].p_buffer )
             hb_buffer_destroy( p_paragraph->p_runs[ i ].p_buffer );
     }



More information about the vlc-commits mailing list