[cairo] [PATCH] gl: Set correct clip region when the destination surface is not texture.

Chuanbo Weng strgnm at gmail.com
Sat Jun 23 20:03:45 PDT 2012

When the destination surface is not texture, it's flipped on the Y axis.
So we should set correct value when using glScissor to set clip region.
Fixes 14 cases(such as partial-clip-text-top) in cairo-test-suite.
 src/cairo-gl-composite.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/src/cairo-gl-composite.c b/src/cairo-gl-composite.c
index d9faa05..f2015de 100644
--- a/src/cairo-gl-composite.c
+++ b/src/cairo-gl-composite.c
@@ -757,7 +757,10 @@ _cairo_gl_composite_draw_triangles_with_clip_region (cairo_gl_context_t *ctx,
 	cairo_rectangle_int_t rect;
 	cairo_region_get_rectangle (ctx->clip_region, i, &rect);
-	glScissor (rect.x, rect.y, rect.width, rect.height);
+	if (_cairo_gl_surface_is_texture (ctx->current_target))
+	    glScissor (rect.x, rect.y, rect.width, rect.height);
+	else
+	    glScissor (rect.x, ctx->current_target->height-rect.y-rect.height, rect.width, rect.height);
 	_cairo_gl_composite_draw_triangles (ctx, count);

More information about the cairo mailing list