From 8b4274d71f055c9c1354413933c4ba071bfac288 Mon Sep 17 00:00:00 2001 From: eugeni Date: Sat, 26 Aug 2006 19:00:21 +0000 Subject: Reset glyph cache on reconfigure. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@19545 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libass/ass_cache.c | 9 +++++++-- libass/ass_cache.h | 1 + libass/ass_render.c | 8 +++++++- 3 files changed, 15 insertions(+), 3 deletions(-) (limited to 'libass') 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(); + } } /** -- cgit v1.2.3