diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2011-11-24 01:08:30 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2011-11-24 10:16:22 +0000 |
commit | 2c4f6bbfbcaacea41386c36f42210120ee815055 (patch) | |
tree | ed3524977b9898532fced3ba5f2a0147dc91dc8b /src/cairo-xlib-render-compositor.c | |
parent | 5e4a0bd892263a5801fdaaa9fa5dbbcfc14c211a (diff) | |
download | cairo-2c4f6bbfbcaacea41386c36f42210120ee815055.tar.gz |
gl: Prevent the traps compositor from exploding
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'src/cairo-xlib-render-compositor.c')
-rw-r--r-- | src/cairo-xlib-render-compositor.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/cairo-xlib-render-compositor.c b/src/cairo-xlib-render-compositor.c index 5dd7668d6..6dad822df 100644 --- a/src/cairo-xlib-render-compositor.c +++ b/src/cairo-xlib-render-compositor.c @@ -1664,6 +1664,17 @@ composite_tristrip (void *abstract_dst, return CAIRO_STATUS_SUCCESS; } +static cairo_int_status_t +check_composite (const cairo_composite_rectangles_t *extents) +{ + cairo_xlib_display_t *display = ((cairo_xlib_surface_t *)extents->surface)->display; + + if (! CAIRO_RENDER_SUPPORTS_OPERATOR (display, extents->op)) + return CAIRO_INT_STATUS_UNSUPPORTED; + + return CAIRO_STATUS_SUCCESS; +} + const cairo_compositor_t * _cairo_xlib_traps_compositor_get (void) { @@ -1680,7 +1691,7 @@ _cairo_xlib_traps_compositor_get (void) compositor.draw_image_boxes = draw_image_boxes; compositor.copy_boxes = copy_boxes; compositor.fill_boxes = fill_boxes; - //compositor.check_composite = check_composite; + compositor.check_composite = check_composite; compositor.composite = composite; compositor.lerp = lerp; //compositor.check_composite_boxes = check_composite_boxes; |