From 93b9987836db7ce745fa089f6d5b0d434cfa82bd Mon Sep 17 00:00:00 2001 From: Massimo Valentini Date: Sun, 11 Jan 2015 16:00:55 +0100 Subject: [PATCH] quick hack --- src/cairo-recording-surface.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/cairo-recording-surface.c b/src/cairo-recording-surface.c index 97fc4ef..4a0a204 100644 --- a/src/cairo-recording-surface.c +++ b/src/cairo-recording-surface.c @@ -86,6 +86,7 @@ #include "cairo-default-context-private.h" #include "cairo-error-private.h" #include "cairo-image-surface-private.h" +#include "cairo-paginated-private.h" #include "cairo-recording-surface-inline.h" #include "cairo-surface-snapshot-inline.h" #include "cairo-surface-wrapper-private.h" @@ -753,6 +754,18 @@ _cairo_recording_surface_paint (void *abstract_surface, if (unlikely (status)) goto CLEANUP_COMMAND; + if (source->type == CAIRO_PATTERN_TYPE_SURFACE) { + cairo_surface_t *pat_surface = ((cairo_surface_pattern_t*)&command->source.base)->surface; + cairo_surface_snapshot_t *snapshot = (cairo_surface_snapshot_t*) pat_surface; + + if (_cairo_surface_is_paginated (snapshot->target) && + _cairo_paginated_surface_get_recording (snapshot->target) == &surface->base) { + status = _cairo_surface_flush (&snapshot->base, 0); + if (unlikely (status)) + goto CLEANUP_COMMAND; + } + } + status = _cairo_recording_surface_commit (surface, &command->header); if (unlikely (status)) goto CLEANUP_SOURCE; -- 2.1.0