[cairo] [PATCH] gl: fix bug in _cairo_gl_surface_embedded_operand_init()

Chuanbo Weng strgnm at gmail.com
Fri Dec 9 00:13:59 PST 2011


The operand->texture.surface should be set to right value, not
NULL. Otherwise, when doing _cairo_gl_surface_operand_init(),
the texture.surface in operand struct will also be NULL, which
is incorrect. This fix regression suite in 43 test cases(such
as source-clip) in cairo/test/.
---
 src/cairo-gl-operand.c |    1 -
 src/cairo-gl-surface.c |    2 +-
 2 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/src/cairo-gl-operand.c b/src/cairo-gl-operand.c
index 9b53b2f..1cfd415 100644
--- a/src/cairo-gl-operand.c
+++ b/src/cairo-gl-operand.c
@@ -254,7 +254,6 @@ _cairo_gl_pattern_texture_setup (cairo_gl_operand_t *operand,
     }
 
     *operand = surface->operand;
-    operand->texture.surface = surface;
     operand->texture.attributes.matrix.x0 -= extents->x * operand->texture.attributes.matrix.xx;
     operand->texture.attributes.matrix.y0 -= extents->y * operand->texture.attributes.matrix.yy;
     return CAIRO_STATUS_SUCCESS;
diff --git a/src/cairo-gl-surface.c b/src/cairo-gl-surface.c
index 90b2594..ed43a51 100644
--- a/src/cairo-gl-surface.c
+++ b/src/cairo-gl-surface.c
@@ -360,7 +360,7 @@ _cairo_gl_surface_embedded_operand_init (cairo_gl_surface_t *surface)
     memset (operand, 0, sizeof (cairo_gl_operand_t));
 
     operand->type = CAIRO_GL_OPERAND_TEXTURE;
-    operand->texture.surface = NULL;
+    operand->texture.surface = surface;
     operand->texture.tex = surface->tex;
 
     if (_cairo_gl_device_requires_power_of_two_textures (surface->base.device)) {
-- 
1.7.5.1



More information about the cairo mailing list