static cairo_surface_t * _cairo_paginated_surface_snapshot (void *abstract_other) { cairo_paginated_surface_t *other = abstract_other; return _cairo_surface_snapshot (other->meta); }
static cairo_surface_t * _cairo_paginated_surface_snapshot (void *abstract_other) { cairo_status_t status; cairo_paginated_surface_t *other = abstract_other; /* XXX: Just making a snapshot of other->meta is what we really * want. But this currently triggers a bug somewhere (the "mask" * test from the test suite segfaults). * * For now, we'll create a new image surface and replay onto * that. It would be tempting to replay into other->image and then * return a snapshot of that, but that will cause the self-copy * test to fail, (since our replay will be affected by a clip that * should not have any effect on the use of the resulting snapshot * as a source). */ #if 0 return _cairo_surface_snapshot (other->meta); #else cairo_rectangle_int16_t extents; cairo_surface_t *surface; status = _cairo_surface_get_extents (other->target, &extents); if (status) return (cairo_surface_t*) &_cairo_surface_nil; surface = _cairo_paginated_surface_create_image_surface (other, extents.width, extents.height); status = _cairo_meta_surface_replay (other->meta, surface); if (status) { cairo_surface_destroy (surface); surface = (cairo_surface_t*) &_cairo_surface_nil; } return surface; #endif }
cairo_surface_t * _cairo_surface_wrapper_snapshot (cairo_surface_wrapper_t *wrapper) { return _cairo_surface_snapshot (wrapper->target); }