diff options
Diffstat (limited to 'libass/ass_render.c')
-rw-r--r-- | libass/ass_render.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/libass/ass_render.c b/libass/ass_render.c index f8b7987d..b11c6817 100644 --- a/libass/ass_render.c +++ b/libass/ass_render.c @@ -2204,12 +2204,14 @@ static void check_cache_limits(ASS_Renderer *priv, CacheStore *cache) ass_cache_empty(cache->composite_cache, 0); ass_free_images(priv->prev_images_root); priv->prev_images_root = 0; + priv->cache_cleared = 1; } if (ass_cache_empty(cache->outline_cache, cache->glyph_max)) { ass_cache_empty(cache->bitmap_cache, 0); ass_cache_empty(cache->composite_cache, 0); ass_free_images(priv->prev_images_root); priv->prev_images_root = 0; + priv->cache_cleared = 1; } } @@ -2475,6 +2477,9 @@ static int ass_detect_change(ASS_Renderer *priv) ASS_Image *img, *img2; int diff; + if (priv->cache_cleared) + return 2; + img = priv->prev_images_root; img2 = priv->images_root; diff = 0; @@ -2571,6 +2576,7 @@ ASS_Image *ass_render_frame(ASS_Renderer *priv, ASS_Track *track, // free the previous image list ass_free_images(priv->prev_images_root); priv->prev_images_root = 0; + priv->cache_cleared = 0; return priv->images_root; } |