diff options
-rw-r--r-- | libass/ass_cache.c | 9 | ||||
-rw-r--r-- | libass/ass_cache.h | 1 | ||||
-rw-r--r-- | libass/ass_render.c | 8 |
3 files changed, 15 insertions, 3 deletions
diff --git a/libass/ass_cache.c b/libass/ass_cache.c index 5d400ed6e7..8409e2d622 100644 --- a/libass/ass_cache.c +++ b/libass/ass_cache.c @@ -190,7 +190,7 @@ void ass_glyph_cache_init(void) glyph_hash_size = 0; } -void ass_glyph_cache_done(void) +void ass_glyph_cache_reset(void) { int i; for (i = 0; i < GLYPH_HASH_SIZE; ++i) { @@ -203,7 +203,12 @@ void ass_glyph_cache_done(void) item = next; } } - free(glyph_hash_root); glyph_hash_size = 0; } +void ass_glyph_cache_done(void) +{ + ass_glyph_cache_reset(); + free(glyph_hash_root); +} + diff --git a/libass/ass_cache.h b/libass/ass_cache.h index 07038b5e47..68f57296bf 100644 --- a/libass/ass_cache.h +++ b/libass/ass_cache.h @@ -44,6 +44,7 @@ typedef struct glyph_hash_val_s { void ass_glyph_cache_init(void); void cache_add_glyph(glyph_hash_key_t* key, glyph_hash_val_t* val); glyph_hash_val_t* cache_find_glyph(glyph_hash_key_t* key); +void ass_glyph_cache_reset(void); void ass_glyph_cache_done(void); #endif diff --git a/libass/ass_render.c b/libass/ass_render.c index 89c026af50..35a506198e 100644 --- a/libass/ass_render.c +++ b/libass/ass_render.c @@ -1737,7 +1737,13 @@ int ass_render_event(ass_event_t* event) void ass_configure(ass_instance_t* priv, const ass_settings_t* config) { - memcpy(&priv->settings, config, sizeof(ass_settings_t)); + if (memcmp(&priv->settings, config, sizeof(ass_settings_t)) != 0) { + mp_msg(MSGT_GLOBAL, MSGL_V, "ass_configure: %d x %d; margins: l: %d, r: %d, t: %d, b: %d \n", + config->frame_width, config->frame_height, + config->left_margin, config->right_margin, config->top_margin, config->bottom_margin); + memcpy(&priv->settings, config, sizeof(ass_settings_t)); + ass_glyph_cache_reset(); + } } /** |