diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2011-08-02 13:51:30 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2011-09-19 15:23:57 +0100 |
commit | fd613cb9f94daff0c8d4fdb27ff89894d41682a3 (patch) | |
tree | 2543cce7d9fd20533e7632899fd01bceadee4487 /src/cairo-xcb-private.h | |
parent | 36a14230453a1fd282671a4ab7ac072b69b9a5f6 (diff) | |
download | cairo-fd613cb9f94daff0c8d4fdb27ff89894d41682a3.tar.gz |
xcb: track fallback damage
And only upload the parts of the image that are modified during the
fallback. I have to keep reminding myself that the goal is always to
reduce the amount of fallbacks required...
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'src/cairo-xcb-private.h')
-rw-r--r-- | src/cairo-xcb-private.h | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/cairo-xcb-private.h b/src/cairo-xcb-private.h index c27843ace..42a112cd2 100644 --- a/src/cairo-xcb-private.h +++ b/src/cairo-xcb-private.h @@ -87,7 +87,8 @@ struct _cairo_xcb_shm_info { struct _cairo_xcb_surface { cairo_surface_t base; - cairo_surface_t *fallback; + cairo_image_surface_t *fallback; + cairo_boxes_t fallback_damage; cairo_xcb_connection_t *connection; cairo_xcb_screen_t *screen; @@ -430,14 +431,14 @@ cairo_private cairo_int_status_t _cairo_xcb_surface_render_paint (cairo_xcb_surface_t *surface, cairo_operator_t op, const cairo_pattern_t *source, - const cairo_clip_t *clip); + cairo_composite_rectangles_t *composite); cairo_private cairo_int_status_t _cairo_xcb_surface_render_mask (cairo_xcb_surface_t *surface, cairo_operator_t op, const cairo_pattern_t *source, const cairo_pattern_t *mask, - const cairo_clip_t *clip); + cairo_composite_rectangles_t *composite); cairo_private cairo_int_status_t _cairo_xcb_surface_render_stroke (cairo_xcb_surface_t *surface, @@ -449,7 +450,7 @@ _cairo_xcb_surface_render_stroke (cairo_xcb_surface_t *surface, const cairo_matrix_t *ctm_inverse, double tolerance, cairo_antialias_t antialias, - const cairo_clip_t *clip); + cairo_composite_rectangles_t *composite); cairo_private cairo_int_status_t _cairo_xcb_surface_render_fill (cairo_xcb_surface_t *surface, @@ -459,7 +460,7 @@ _cairo_xcb_surface_render_fill (cairo_xcb_surface_t *surface, cairo_fill_rule_t fill_rule, double tolerance, cairo_antialias_t antialias, - const cairo_clip_t *clip); + cairo_composite_rectangles_t *composite); cairo_private cairo_int_status_t _cairo_xcb_surface_render_glyphs (cairo_xcb_surface_t *surface, @@ -468,7 +469,8 @@ _cairo_xcb_surface_render_glyphs (cairo_xcb_surface_t *surface, cairo_scaled_font_t *scaled_font, cairo_glyph_t *glyphs, int num_glyphs, - const cairo_clip_t *clip); + cairo_composite_rectangles_t *composite, + cairo_bool_t overlap); cairo_private void _cairo_xcb_surface_scaled_font_fini (cairo_scaled_font_t *scaled_font); |