diff options
author | Grigori Goronzy <greg@blackbox> | 2010-08-09 02:55:30 +0200 |
---|---|---|
committer | Grigori Goronzy <greg@blackbox> | 2010-08-09 02:55:30 +0200 |
commit | 4785892febea2fbb127e9ec174035991c06dea95 (patch) | |
tree | 8daf5a478c1c88dd134108bd1fb760bcfc55669f /libass/ass_parse.c | |
parent | d8727de26b1e6ccf2682437e9f23d16a0be7ee79 (diff) | |
download | libass-4785892febea2fbb127e9ec174035991c06dea95.tar.bz2 libass-4785892febea2fbb127e9ec174035991c06dea95.tar.xz |
Fix drawing leakage: delay glyph allocation
Delay allocation of the "faux" glyph until a drawing is parsed.
This helps with fixing a (pretty bad) memory leak and also reduces frame
overhead a little.
Diffstat (limited to 'libass/ass_parse.c')
-rw-r--r-- | libass/ass_parse.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/libass/ass_parse.c b/libass/ass_parse.c index 654fa7f..cac5760 100644 --- a/libass/ass_parse.c +++ b/libass/ass_parse.c @@ -214,13 +214,14 @@ static char *parse_vector_clip(ASS_Renderer *render_priv, char *p) { int scale = 1; int res = 0; - ASS_Drawing *drawing; + ASS_Drawing *drawing = render_priv->state.clip_drawing; - ass_drawing_free(render_priv->state.clip_drawing); + if (drawing && drawing->glyph) + FT_Done_Glyph((FT_Glyph) drawing->glyph); + ass_drawing_free(drawing); render_priv->state.clip_drawing = ass_drawing_new( render_priv->fontconfig_priv, render_priv->state.font, - render_priv->settings.hinting, render_priv->ftlibrary); drawing = render_priv->state.clip_drawing; skipopt('('); |