diff --git a/src/cairo-gl-composite.c b/src/cairo-gl-composite.c index 272ebe252..c32c89bce 100644 --- a/src/cairo-gl-composite.c +++ b/src/cairo-gl-composite.c @@ -1111,7 +1111,8 @@ static inline void _cairo_gl_operand_emit (cairo_gl_operand_t *operand, GLfloat ** vb, GLfloat x, - GLfloat y) + GLfloat y, + uint32_t color) { switch (operand->type) { default: @@ -1143,15 +1144,16 @@ static inline void _cairo_gl_composite_emit_vertex (cairo_gl_context_t *ctx, cairo_gl_composite_t *setup, GLfloat x, - GLfloat y) + GLfloat y, + uint32_t color) { GLfloat *vb = (GLfloat *) (void *) &setup->vb[setup->vb_offset]; *vb++ = x; *vb++ = y; - _cairo_gl_operand_emit (&setup->src, &vb, x, y); - _cairo_gl_operand_emit (&setup->mask, &vb, x, y); + _cairo_gl_operand_emit (&setup->src, &vb, x, y, color); + _cairo_gl_operand_emit (&setup->mask, &vb, x, y, color); setup->vb_offset += setup->vertex_size; } @@ -1159,17 +1161,18 @@ _cairo_gl_composite_emit_vertex (cairo_gl_context_t *ctx, void _cairo_gl_composite_emit_rect (cairo_gl_context_t *ctx, cairo_gl_composite_t *setup, - GLfloat x, - GLfloat y, - GLfloat width, - GLfloat height) + GLfloat x1, + GLfloat y1, + GLfloat x2, + GLfloat y2, + uint32_t color) { _cairo_gl_composite_prepare_buffer (ctx, setup, 4); - _cairo_gl_composite_emit_vertex (ctx, setup, x, y); - _cairo_gl_composite_emit_vertex (ctx, setup, x + width, y); - _cairo_gl_composite_emit_vertex (ctx, setup, x + width, y + height); - _cairo_gl_composite_emit_vertex (ctx, setup, x, y + height); + _cairo_gl_composite_emit_vertex (ctx, setup, x1, y1, color); + _cairo_gl_composite_emit_vertex (ctx, setup, x2, y1, color); + _cairo_gl_composite_emit_vertex (ctx, setup, x2, y2, color); + _cairo_gl_composite_emit_vertex (ctx, setup, x1, y2, color); } void diff --git a/src/cairo-gl-private.h b/src/cairo-gl-private.h index e92668903..870d80c56 100644 --- a/src/cairo-gl-private.h +++ b/src/cairo-gl-private.h @@ -304,10 +304,11 @@ _cairo_gl_composite_begin (cairo_gl_context_t *ctx, cairo_private void _cairo_gl_composite_emit_rect (cairo_gl_context_t *ctx, cairo_gl_composite_t *setup, - GLfloat x, - GLfloat y, - GLfloat width, - GLfloat height); + GLfloat x1, + GLfloat y1, + GLfloat x2, + GLfloat y2, + uint32_t color); cairo_private void _cairo_gl_composite_end (cairo_gl_context_t *ctx, diff --git a/src/cairo-gl-surface.c b/src/cairo-gl-surface.c index 4bec4ee40..6f91dbd7c 100644 --- a/src/cairo-gl-surface.c +++ b/src/cairo-gl-surface.c @@ -1001,13 +1001,15 @@ _cairo_gl_surface_composite (cairo_operator_t op, cairo_region_get_rectangle (clip_region, i, &rect); _cairo_gl_composite_emit_rect (ctx, &setup, - rect.x, rect.y, - rect.width, rect.height); + rect.x, rect.y, + rect.x + rect.width, rect.y + rect.height, + 0); } } else { _cairo_gl_composite_emit_rect (ctx, &setup, - dst_x, dst_y, - width, height); + dst_x, dst_y, + dst_x + width, dst_y + height, + 0); } _cairo_gl_composite_end (ctx, &setup);