summaryrefslogtreecommitdiff
path: root/src/cairo-recording-surface.c
diff options
context:
space:
mode:
authorAnton Danilkin <afdw@yandex.ru>2020-11-13 17:23:13 +0100
committerAnton Danilkin <afdw@yandex.ru>2021-04-11 23:59:47 +0200
commit8c08f499bd52d79d0ee13be5050d134e97e2211b (patch)
tree4163715149e4bdc36defeccaf10e3c619a0dffa9 /src/cairo-recording-surface.c
parent277a1daec80cb6cf7bfb0e200cf78e7842cb2f82 (diff)
downloadcairo-8c08f499bd52d79d0ee13be5050d134e97e2211b.tar.gz
Fix problems in the SVG backend related to outputting surfaces and patterns
Now the SVG surface should work correctly work with bounded and unbounded image (-like) and recording surfaces with NONE and REPEAT extends as source for all operations. Fill or stroke with an unbounded surface as source now means using clip or mask respectively. Fix using unitialized memory in the SVG surface. Also fix unintialized memory and working with offsetted images in the recording surface.
Diffstat (limited to 'src/cairo-recording-surface.c')
-rw-r--r--src/cairo-recording-surface.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/cairo-recording-surface.c b/src/cairo-recording-surface.c
index 71a44798f..8d0e5376a 100644
--- a/src/cairo-recording-surface.c
+++ b/src/cairo-recording-surface.c
@@ -613,6 +613,8 @@ _cairo_recording_surface_acquire_source_image (void *abstract_surface,
if (unlikely (image->status))
return image->status;
+ cairo_surface_set_device_offset(image, -surface->extents.x, -surface->extents.y);
+
/* Handle recursion by returning future reads from the current image */
proxy = attach_proxy (abstract_surface, image);
status = _cairo_recording_surface_replay (&surface->base, image);
@@ -1592,6 +1594,8 @@ _cairo_recording_surface_snapshot (void *abstract_other)
surface->extents_pixels = other->extents_pixels;
surface->extents = other->extents;
surface->unbounded = other->unbounded;
+ surface->has_bilevel_alpha = other->has_bilevel_alpha;
+ surface->has_only_op_over = other->has_only_op_over;
surface->base.is_clear = other->base.is_clear;