diff options
-rw-r--r-- | src/cairo-image-surface.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/cairo-image-surface.c b/src/cairo-image-surface.c index 3fe6e433..20a1c03e 100644 --- a/src/cairo-image-surface.c +++ b/src/cairo-image-surface.c @@ -1240,7 +1240,14 @@ _cairo_image_surface_clone_subimage (cairo_surface_t *surface, if (unlikely (status)) goto error; - _cairo_image_surface_set_parent (to_image_surface (image), surface); + /* We use the parent as a flag during map-to-image/umap-image that the + * resultant image came from a fallback rather than as direct call + * to the backend's map_to_image(). Whilst we use it as a simple flag, + * we need to make sure the parent surface obeys the reference counting + * semantics and is consistent for all callers. + */ + _cairo_image_surface_set_parent (to_image_surface (image), + cairo_surface_reference (surface)); return to_image_surface (image); |