diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2011-08-13 20:07:57 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2011-08-14 12:37:56 +0100 |
commit | 99fa5ff6c211b96326484f80fe91ead0860c3a23 (patch) | |
tree | 92cf942c2080bfe2217ef04382bb118b088ebe3b /src/cairo-analysis-surface.c | |
parent | 79aa04fd50463629b3ab2e2efbcd8084038f6c09 (diff) |
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.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/cairo-analysis-surface.c b/src/cairo-analysis-surface.c index 459bc816..0ae09a8c 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; |