summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenry Song <henry.song@samsung.com>2012-05-15 20:32:44 +0200
committerMartin Robinson <mrobinson@igalia.com>2012-12-05 15:56:35 -0800
commit3bedff0c009e645fff2d6f40976b4483871e73e1 (patch)
tree130164dbe4002f450ab82a232174e0ad37887046
parent18e7234c7e56ca26d7d7a2e29b1da2bb6944bb34 (diff)
downloadcairo-3bedff0c009e645fff2d6f40976b4483871e73e1.tar.gz
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.
-rw-r--r--src/cairo-gl-composite.c14
1 files 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);