diff options
Diffstat (limited to 'libass')
-rw-r--r-- | libass/ass_render.c | 9 | ||||
-rw-r--r-- | libass/ass_render.h | 1 |
2 files changed, 5 insertions, 5 deletions
diff --git a/libass/ass_render.c b/libass/ass_render.c index 0c4d204..45f3be6 100644 --- a/libass/ass_render.c +++ b/libass/ass_render.c @@ -179,6 +179,7 @@ static ASS_Image *my_draw_bitmap(unsigned char *bitmap, int bitmap_w, img->source = source; ass_cache_inc_ref(source); + img->buffer = source ? NULL : bitmap; img->ref_count = 0; return &img->result; @@ -754,8 +755,8 @@ static void blend_vector_clip(ASS_Renderer *render_priv, ASS_Image *head) cur->stride = ns; } - cur->bitmap = nbuffer; ASS_ImagePriv *priv = (ASS_ImagePriv *) cur; + priv->buffer = cur->bitmap = nbuffer; ass_cache_dec_ref(priv->source); priv->source = NULL; } @@ -3138,10 +3139,8 @@ void ass_frame_unref(ASS_Image *img) do { ASS_ImagePriv *priv = (ASS_ImagePriv *) img; img = img->next; - if (priv->source) - ass_cache_dec_ref(priv->source); - else - ass_aligned_free(priv->result.bitmap); + ass_cache_dec_ref(priv->source); + ass_aligned_free(priv->buffer); free(priv); } while (img); } diff --git a/libass/ass_render.h b/libass/ass_render.h index e654a94..4558575 100644 --- a/libass/ass_render.h +++ b/libass/ass_render.h @@ -52,6 +52,7 @@ typedef struct { ASS_Image result; CompositeHashValue *source; + unsigned char *buffer; size_t ref_count; } ASS_ImagePriv; |