summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoreugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-08-26 19:00:21 +0000
committereugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-08-26 19:00:21 +0000
commit8b4274d71f055c9c1354413933c4ba071bfac288 (patch)
tree818a814b8c5c9375961dc4417bd5b2ef9cc42e31
parenta0f422546d2902029303bba64ece315a2cdf6a2b (diff)
downloadmpv-8b4274d71f055c9c1354413933c4ba071bfac288.tar.bz2
mpv-8b4274d71f055c9c1354413933c4ba071bfac288.tar.xz
Reset glyph cache on reconfigure.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@19545 b3059339-0415-0410-9bf9-f77b7e298cf2
-rw-r--r--libass/ass_cache.c9
-rw-r--r--libass/ass_cache.h1
-rw-r--r--libass/ass_render.c8
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();
+ }
}
/**