diff options
author | eugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2006-08-26 19:00:21 +0000 |
---|---|---|
committer | eugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2006-08-26 19:00:21 +0000 |
commit | 0a188fde552c8fe724466953e0e85295fb17bf14 (patch) | |
tree | 48cccf7685b558c801843883db493d09f266d340 /libass | |
parent | cfdd0e925e8111496b57832c1d71ad7b0ea5dcb7 (diff) | |
download | libass-0a188fde552c8fe724466953e0e85295fb17bf14.tar.bz2 libass-0a188fde552c8fe724466953e0e85295fb17bf14.tar.xz |
Reset glyph cache on reconfigure.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@19545 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libass')
-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 5d400ed6..8409e2d6 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 07038b5e..68f57296 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 89c026af..35a50619 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(); + } } /** |