mirror of https://git.ffmpeg.org/ffmpeg.git
librsvgdec: Fix frame clearing code
The existing code attempts to clear the frame by painting in OVER mode with transparent black - which is a no-op. As a result if you have many input frames (e.g. you're using a sequence of svg files), you'll start to see new frames drawn over old frames as memory gets re-used. Switch the code to paint using the CLEAR compositing operator, which fills every channel with 0 values (setting a source colour is not required).
This commit is contained in:
parent
4be6307cbf
commit
108958e43d
|
@ -82,8 +82,10 @@ static int librsvg_decode_frame(AVCodecContext *avctx, void *data, int *got_fram
|
|||
|
||||
crender = cairo_create(image);
|
||||
|
||||
cairo_set_source_rgba(crender, 0.0, 0.0, 0.0, 1.0f);
|
||||
cairo_paint_with_alpha(crender, 0.0f);
|
||||
cairo_save(crender);
|
||||
cairo_set_operator(crender, CAIRO_OPERATOR_CLEAR);
|
||||
cairo_paint(crender);
|
||||
cairo_restore(crender);
|
||||
|
||||
cairo_scale(crender, dimensions.width / (double)unscaled_dimensions.width,
|
||||
dimensions.height / (double)unscaled_dimensions.height);
|
||||
|
|
Loading…
Reference in New Issue