summaryrefslogtreecommitdiff
path: root/src/cairo-xlib-render-compositor.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2011-11-24 01:08:30 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2011-11-24 10:16:22 +0000
commit2c4f6bbfbcaacea41386c36f42210120ee815055 (patch)
treeed3524977b9898532fced3ba5f2a0147dc91dc8b /src/cairo-xlib-render-compositor.c
parent5e4a0bd892263a5801fdaaa9fa5dbbcfc14c211a (diff)
downloadcairo-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.c13
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;