diff options
Diffstat (limited to 'libass/ass_render.c')
-rw-r--r-- | libass/ass_render.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/libass/ass_render.c b/libass/ass_render.c index 85c6aec..8e590e8 100644 --- a/libass/ass_render.c +++ b/libass/ass_render.c @@ -449,18 +449,22 @@ render_glyph(ASS_Renderer *render_priv, Bitmap *bm, int dst_x, int dst_y, tmp = dst_x - clip_x0; if (tmp < 0) { b_x0 = -tmp; + render_priv->state.has_clips = 1; } tmp = dst_y - clip_y0; if (tmp < 0) { b_y0 = -tmp; + render_priv->state.has_clips = 1; } tmp = clip_x1 - dst_x - bm->w; if (tmp < 0) { b_x1 = bm->w + tmp; + render_priv->state.has_clips = 1; } tmp = clip_y1 - dst_y - bm->h; if (tmp < 0) { b_y1 = bm->h + tmp; + render_priv->state.has_clips = 1; } if ((b_y0 >= b_y1) || (b_x0 >= b_x1)) @@ -571,7 +575,7 @@ static void blend_vector_clip(ASS_Renderer *render_priv, int aleft, atop, bleft, btop; unsigned char *abuffer, *bbuffer, *nbuffer; - render_priv->state.has_vector_clip = 1; + render_priv->state.has_clips = 1; abuffer = cur->bitmap; bbuffer = clip_bm->buffer; @@ -810,7 +814,7 @@ init_render_context(ASS_Renderer *render_priv, ASS_Event *event) render_priv->state.event = event; render_priv->state.style = render_priv->track->styles + event->Style; render_priv->state.parsed_tags = 0; - render_priv->state.has_vector_clip = 0; + render_priv->state.has_clips = 0; reset_render_context(render_priv, render_priv->state.style); render_priv->state.wrap_style = render_priv->track->WrapStyle; @@ -2856,7 +2860,7 @@ static int ass_detect_change(ASS_Renderer *priv) ASS_Image *img, *img2; int diff; - if (priv->cache_cleared || priv->state.has_vector_clip) + if (priv->cache_cleared || priv->state.has_clips) return 2; img = priv->prev_images_root; |