summaryrefslogtreecommitdiff
path: root/src/cairo-xcb-private.h
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2011-08-02 13:51:30 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2011-09-19 15:23:57 +0100
commitfd613cb9f94daff0c8d4fdb27ff89894d41682a3 (patch)
tree2543cce7d9fd20533e7632899fd01bceadee4487 /src/cairo-xcb-private.h
parent36a14230453a1fd282671a4ab7ac072b69b9a5f6 (diff)
downloadcairo-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.h14
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);