summaryrefslogtreecommitdiffstats
path: root/libass/ass_parse.c
diff options
context:
space:
mode:
authorGrigori Goronzy <greg@blackbox>2010-08-09 02:55:30 +0200
committerGrigori Goronzy <greg@blackbox>2010-08-09 02:55:30 +0200
commit4785892febea2fbb127e9ec174035991c06dea95 (patch)
tree8daf5a478c1c88dd134108bd1fb760bcfc55669f /libass/ass_parse.c
parentd8727de26b1e6ccf2682437e9f23d16a0be7ee79 (diff)
downloadlibass-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.c7
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('(');