summaryrefslogtreecommitdiffstats
path: root/libass
diff options
context:
space:
mode:
authorUoti Urpala <uau@glyph.nonexistent.invalid>2009-04-01 02:26:34 +0300
committerUoti Urpala <uau@glyph.nonexistent.invalid>2009-04-01 02:43:47 +0300
commitcf9edda1d370d39bc8a3d020a9c2bc4090d2457e (patch)
tree1d1bbc529a4e8109fb6aa5cadf0dbbb7bd61013a /libass
parent7af8417ae7beb409f54849956a7037bc66c4c334 (diff)
parent1c37a6427abef0827c608d328d37ca1b1a0a022d (diff)
downloadmpv-cf9edda1d370d39bc8a3d020a9c2bc4090d2457e.tar.bz2
mpv-cf9edda1d370d39bc8a3d020a9c2bc4090d2457e.tar.xz
Merge svn changes up to r29117
Diffstat (limited to 'libass')
-rw-r--r--libass/ass_fontconfig.c12
-rw-r--r--libass/ass_render.c4
2 files changed, 11 insertions, 5 deletions
diff --git a/libass/ass_fontconfig.c b/libass/ass_fontconfig.c
index d0042dcdfd..a54bc8c4af 100644
--- a/libass/ass_fontconfig.c
+++ b/libass/ass_fontconfig.c
@@ -160,11 +160,13 @@ static char* _select_font(fc_instance_t* priv, const char* family, int treat_fam
goto error;
#if (FC_VERSION >= 20297)
- // Remove all extra family names from original pattern.
- // After this, FcFontRenderPrepare will select the most relevant family
- // name in case there are more than one of them.
- for (; family_cnt > 1; --family_cnt)
- FcPatternRemove(pat, FC_FAMILY, family_cnt - 1);
+ if (!treat_family_as_pattern) {
+ // Remove all extra family names from original pattern.
+ // After this, FcFontRenderPrepare will select the most relevant family
+ // name in case there are more than one of them.
+ for (; family_cnt > 1; --family_cnt)
+ FcPatternRemove(pat, FC_FAMILY, family_cnt - 1);
+ }
#endif
rpat = FcFontRenderPrepare(priv->config, pat, fset->fonts[curf]);
diff --git a/libass/ass_render.c b/libass/ass_render.c
index e52195e023..fd3a122e9b 100644
--- a/libass/ass_render.c
+++ b/libass/ass_render.c
@@ -455,6 +455,7 @@ static void render_overlap(ass_image_t** last_tail, ass_image_t** tail, bitmap_h
cur_top = top-by;
// Query cache
+ memset(&hk, 0, sizeof(hk));
memcpy(&hk.a, last_hash, sizeof(*last_hash));
memcpy(&hk.b, hash, sizeof(*hash));
hk.aw = aw;
@@ -1432,6 +1433,7 @@ static void get_outline_glyph(int symbol, glyph_info_t* info, FT_Vector* advance
int error;
glyph_hash_val_t* val;
glyph_hash_key_t key;
+ memset(&key, 0, sizeof(key));
key.font = render_context.font;
key.size = render_context.font_size;
key.ch = symbol;
@@ -1876,6 +1878,7 @@ static void transform_3d(FT_Vector shift, FT_Glyph* glyph, FT_Glyph* glyph2, dou
/**
* \brief Main ass rendering function, glues everything together
* \param event event to render
+ * \param event_images struct containing resulting images, will also be initialized
* Process event, appending resulting ass_image_t's to images_root.
*/
static int ass_render_event(ass_event_t* event, event_images_t* event_images)
@@ -2169,6 +2172,7 @@ static int ass_render_event(ass_event_t* event, event_images_t* event_images)
for (i = 0; i < text_info.length; ++i)
get_bitmap_glyph(text_info.glyphs + i);
+ memset(event_images, 0, sizeof(*event_images));
event_images->top = device_y - d6_to_int(text_info.lines[0].asc);
event_images->height = d6_to_int(text_info.height);
event_images->detect_collisions = render_context.detect_collisions;