diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2011-07-23 12:19:17 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2011-07-23 15:33:14 +0100 |
commit | a30a7402f73485dabdb6a016178247f9844017a1 (patch) | |
tree | 54a047cbed002b2ff4c83a305019b503314da882 /src/cairo-surface-wrapper-private.h | |
parent | bff8e22eb6b7faeac04ca585cb739e7880a3335c (diff) | |
download | cairo-a30a7402f73485dabdb6a016178247f9844017a1.tar.gz |
image: replay the recording surface directly onto the target
백현기 reported a use-case where he was recording an entire web-page
onto the recording surface, in order to facilitate panning. In this
scenario, where there may be lots of similar surfaces within the
recording we generate thousands of unused snapshot-images bloating
memory usage and impairing performance.
Under the right conditions we can replay directly onto the destination
which not only bypasses the snapshots but also skips the following
resampling.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'src/cairo-surface-wrapper-private.h')
-rw-r--r-- | src/cairo-surface-wrapper-private.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/cairo-surface-wrapper-private.h b/src/cairo-surface-wrapper-private.h index b3d3a55ae..97ac8097a 100644 --- a/src/cairo-surface-wrapper-private.h +++ b/src/cairo-surface-wrapper-private.h @@ -46,8 +46,13 @@ CAIRO_BEGIN_DECLS struct _cairo_surface_wrapper { cairo_surface_t *target; + cairo_matrix_t transform; + cairo_bool_t has_extents; cairo_rectangle_int_t extents; + const cairo_clip_t *clip; + + cairo_bool_t needs_transform; }; cairo_private void @@ -59,6 +64,14 @@ _cairo_surface_wrapper_set_extents (cairo_surface_wrapper_t *wrapper, const cairo_rectangle_int_t *extents); cairo_private void +_cairo_surface_wrapper_set_inverse_transform (cairo_surface_wrapper_t *wrapper, + const cairo_matrix_t *transform); + +cairo_private void +_cairo_surface_wrapper_set_clip (cairo_surface_wrapper_t *wrapper, + const cairo_clip_t *clip); + +cairo_private void _cairo_surface_wrapper_fini (cairo_surface_wrapper_t *wrapper); cairo_private cairo_status_t |