From 3bedff0c009e645fff2d6f40976b4483871e73e1 Mon Sep 17 00:00:00 2001 From: Henry Song Date: Tue, 15 May 2012 20:32:44 +0200 Subject: [PATCH] gl: Properly disable ctx->spans when necessary When compositing starts, if we are not using the spans compositor, we should set the spans member of the context to false. --- src/cairo-gl-composite.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/cairo-gl-composite.c b/src/cairo-gl-composite.c index 45fa04297..e222c444b 100644 --- a/src/cairo-gl-composite.c +++ b/src/cairo-gl-composite.c @@ -266,11 +266,18 @@ _cairo_gl_context_setup_operand (cairo_gl_context_t *ctx, static void _cairo_gl_context_setup_spans (cairo_gl_context_t *ctx, + cairo_bool_t spans_enabled, unsigned int vertex_size, unsigned int vertex_offset) { cairo_gl_dispatch_t *dispatch = &ctx->dispatch; + if (! spans_enabled) { + dispatch->DisableVertexAttribArray (CAIRO_GL_COLOR_ATTRIB_INDEX); + ctx->spans = FALSE; + return; + } + dispatch->VertexAttribPointer (CAIRO_GL_COLOR_ATTRIB_INDEX, 4, GL_UNSIGNED_BYTE, GL_TRUE, vertex_size, ctx->vb + vertex_offset); @@ -681,10 +688,9 @@ _cairo_gl_composite_begin_multisample (cairo_gl_composite_t *setup, _cairo_gl_context_setup_operand (ctx, CAIRO_GL_TEX_SOURCE, &setup->src, vertex_size, dst_size); _cairo_gl_context_setup_operand (ctx, CAIRO_GL_TEX_MASK, &setup->mask, vertex_size, dst_size + src_size); - if (setup->spans) - _cairo_gl_context_setup_spans (ctx, vertex_size, dst_size + src_size + mask_size); - else - ctx->dispatch.DisableVertexAttribArray (CAIRO_GL_COLOR_ATTRIB_INDEX); + + _cairo_gl_context_setup_spans (ctx, setup->spans, vertex_size, + dst_size + src_size + mask_size); _cairo_gl_set_operator (ctx, setup->op, component_alpha);