From 93b9987836db7ce745fa089f6d5b0d434cfa82bd Mon Sep 17 00:00:00 2001
From: Massimo Valentini <mvalentini@src.gnome.org>
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

