summaryrefslogtreecommitdiff
path: root/src/cairo-analysis-surface.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2011-08-13 20:07:57 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2011-08-14 12:37:56 +0100
commit99fa5ff6c211b96326484f80fe91ead0860c3a23 (patch)
tree92cf942c2080bfe2217ef04382bb118b088ebe3b /src/cairo-analysis-surface.c
parent79aa04fd50463629b3ab2e2efbcd8084038f6c09 (diff)
downloadcairo-99fa5ff6c211b96326484f80fe91ead0860c3a23.tar.gz
snapshot: Defer acquisition
Fixes 'xlib-expose-event' but triggers an infinite loop in self-copy. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'src/cairo-analysis-surface.c')
-rw-r--r--src/cairo-analysis-surface.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/cairo-analysis-surface.c b/src/cairo-analysis-surface.c
index 459bc8163..0ae09a8c1 100644
--- a/src/cairo-analysis-surface.c
+++ b/src/cairo-analysis-surface.c
@@ -41,6 +41,7 @@
#include "cairo-error-private.h"
#include "cairo-paginated-private.h"
#include "cairo-recording-surface-private.h"
+#include "cairo-surface-snapshot-private.h"
#include "cairo-surface-subsurface-private.h"
#include "cairo-region-private.h"
@@ -119,6 +120,8 @@ _analyze_recording_surface_pattern (cairo_analysis_surface_t *surface,
surface->has_ctm = ! _cairo_matrix_is_identity (&surface->ctm);
source = surface_pattern->surface;
+ if (source->backend->type == CAIRO_INTERNAL_SURFACE_TYPE_SNAPSHOT)
+ source = _cairo_surface_snapshot_get_target (source);
if (source->backend->type == CAIRO_SURFACE_TYPE_SUBSURFACE) {
cairo_surface_subsurface_t *sub = (cairo_surface_subsurface_t *) source;
source = sub->target;