summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--configure.in2
-rw-r--r--src/cairo-glitz-surface.c67
-rw-r--r--src/cairo_glitz_surface.c67
4 files changed, 65 insertions, 75 deletions
diff --git a/ChangeLog b/ChangeLog
index b95cb214..55a320b0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
2005-01-25 David Reveman <davidr@novell.com>
+ * configure.in: Require version 0.4.0 of glitz.
+
+ * src/cairo_glitz_surface.c: Track changes to glitz.
+
* src/cairo_xcb_surface.c: Add missing include directive so xcb
backend compile again.
diff --git a/configure.in b/configure.in
index 61b59280..74da3bab 100644
--- a/configure.in
+++ b/configure.in
@@ -194,7 +194,7 @@ AC_ARG_ENABLE(glitz,
[use_glitz=$enableval], [use_glitz=yes])
if test "x$use_glitz" = "xyes"; then
- PKG_CHECK_MODULES(GLITZ, glitz >= 0.3.0, [
+ PKG_CHECK_MODULES(GLITZ, glitz >= 0.4.0, [
GLITZ_REQUIRES=glitz
use_glitz=yes], [use_glitz="no (requires glitz http://freedesktop.org/software/glitz)"])
fi
diff --git a/src/cairo-glitz-surface.c b/src/cairo-glitz-surface.c
index 69fc82f2..ede5e96f 100644
--- a/src/cairo-glitz-surface.c
+++ b/src/cairo-glitz-surface.c
@@ -333,7 +333,7 @@ _glitz_surface_create_solid (glitz_surface_t *other,
if (format == NULL)
return NULL;
- surface = glitz_surface_create (drawable, format, 1, 1);
+ surface = glitz_surface_create (drawable, format, 1, 1, 0, NULL);
if (surface == NULL)
return NULL;
@@ -355,7 +355,6 @@ _glitz_ensure_target (glitz_surface_t *surface)
glitz_drawable_format_t templ;
glitz_format_t *format;
glitz_drawable_t *pbuffer;
- glitz_pbuffer_attributes_t attributes;
unsigned long mask;
int i;
@@ -397,21 +396,13 @@ _glitz_ensure_target (glitz_surface_t *surface)
if (!dformat)
return CAIRO_INT_STATUS_UNSUPPORTED;
- attributes.width = glitz_surface_get_width (surface);
- attributes.height = glitz_surface_get_height (surface);
- mask = GLITZ_PBUFFER_WIDTH_MASK | GLITZ_PBUFFER_HEIGHT_MASK;
-
- pbuffer = glitz_create_pbuffer_drawable (drawable, dformat,
- &attributes, mask);
+ pbuffer =
+ glitz_create_pbuffer_drawable (drawable, dformat,
+ glitz_surface_get_width (surface),
+ glitz_surface_get_height (surface));
if (!pbuffer)
return CAIRO_INT_STATUS_UNSUPPORTED;
- if (glitz_drawable_get_width (pbuffer) < attributes.width ||
- glitz_drawable_get_height (pbuffer) < attributes.height) {
- glitz_drawable_destroy (pbuffer);
- return CAIRO_INT_STATUS_UNSUPPORTED;
- }
-
glitz_surface_attach (surface, pbuffer,
GLITZ_DRAWABLE_BUFFER_FRONT_COLOR,
0, 0);
@@ -457,7 +448,7 @@ _cairo_glitz_surface_create_similar (void *abstract_src,
if (gformat == NULL)
return NULL;
- surface = glitz_surface_create (drawable, gformat, width, height);
+ surface = glitz_surface_create (drawable, gformat, width, height, 0, NULL);
if (surface == NULL)
return NULL;
@@ -510,7 +501,8 @@ _glitz_composite (glitz_operator_t op,
int width,
int height,
glitz_buffer_t *geometry,
- glitz_geometry_format_t *format)
+ glitz_geometry_format_t *format,
+ int count)
{
if (_glitz_ensure_target (dst))
return CAIRO_INT_STATUS_UNSUPPORTED;
@@ -518,9 +510,10 @@ _glitz_composite (glitz_operator_t op,
if (glitz_surface_get_status (dst))
return CAIRO_STATUS_NO_TARGET_SURFACE;
- glitz_set_geometry (dst,
- 0, 0,
- format, geometry);
+ if (geometry) {
+ glitz_set_geometry (dst, GLITZ_GEOMETRY_TYPE_VERTEX, format, geometry);
+ glitz_set_array (dst, 0, 2, count, 0, 0);
+ }
glitz_composite (op,
src,
@@ -531,7 +524,7 @@ _glitz_composite (glitz_operator_t op,
dst_x, dst_y,
width, height);
- glitz_set_geometry (dst, 0, 0, NULL, NULL);
+ glitz_set_geometry (dst, GLITZ_GEOMETRY_TYPE_NONE, NULL, NULL);
if (glitz_surface_get_status (dst) == GLITZ_STATUS_NOT_SUPPORTED)
return CAIRO_INT_STATUS_UNSUPPORTED;
@@ -589,7 +582,7 @@ _cairo_glitz_surface_composite (cairo_operator_t op,
mask_x, mask_y,
dst_x, dst_y,
width, height,
- NULL, NULL);
+ NULL, NULL, 0);
if (src_clone)
cairo_surface_destroy (&src_clone->base);
@@ -624,16 +617,16 @@ _cairo_glitz_surface_fill_rectangles (void *abstract_dst,
glitz_buffer_t *buffer;
glitz_geometry_format_t gf;
cairo_int_status_t status;
- int width, height;
+ int width, height, count;
void *data;
- gf.mode = GLITZ_GEOMETRY_MODE_DIRECT;
- gf.edge_hint = GLITZ_GEOMETRY_EDGE_HINT_SHARP;
- gf.primitive = GLITZ_GEOMETRY_PRIMITIVE_QUADS;
- gf.type = GLITZ_DATA_TYPE_FLOAT;
- gf.first = 0;
- gf.count = n_rects * 4;
+ gf.vertex.primitive = GLITZ_PRIMITIVE_QUADS;
+ gf.vertex.type = GLITZ_DATA_TYPE_FLOAT;
+ gf.vertex.bytes_per_vertex = 2 * sizeof (glitz_float_t);
+ gf.vertex.attributes = 0;
+ count = n_rects * 4;
+
data = malloc (n_rects * 8 * sizeof (glitz_float_t));
if (!data)
return CAIRO_STATUS_NO_MEMORY;
@@ -678,7 +671,7 @@ _cairo_glitz_surface_fill_rectangles (void *abstract_dst,
0, 0,
0, 0,
width, height,
- buffer, &gf);
+ buffer, &gf, count);
glitz_surface_destroy (solid);
glitz_buffer_destroy (buffer);
@@ -715,7 +708,7 @@ _cairo_glitz_surface_composite_trapezoids (cairo_operator_t op,
glitz_buffer_t *buffer;
glitz_geometry_format_t gf;
cairo_int_status_t status;
- int x_dst, y_dst, x_rel, y_rel, width, height;
+ int x_dst, y_dst, x_rel, y_rel, width, height, count;
void *data;
if (op == CAIRO_OPERATOR_SATURATE)
@@ -724,12 +717,12 @@ _cairo_glitz_surface_composite_trapezoids (cairo_operator_t op,
if (generic_src->backend != dst->base.backend)
return CAIRO_INT_STATUS_UNSUPPORTED;
- gf.mode = GLITZ_GEOMETRY_MODE_DIRECT;
- gf.edge_hint = GLITZ_GEOMETRY_EDGE_HINT_GOOD_SMOOTH;
- gf.primitive = GLITZ_GEOMETRY_PRIMITIVE_QUADS;
- gf.type = GLITZ_DATA_TYPE_FLOAT;
- gf.first = 0;
- gf.count = n_traps * 4;
+ gf.vertex.primitive = GLITZ_PRIMITIVE_QUADS;
+ gf.vertex.type = GLITZ_DATA_TYPE_FLOAT;
+ gf.vertex.bytes_per_vertex = 2 * sizeof (glitz_float_t);
+ gf.vertex.attributes = 0;
+
+ count = n_traps * 4;
data = malloc (n_traps * 8 * sizeof (glitz_float_t));
if (!data)
@@ -795,7 +788,7 @@ _cairo_glitz_surface_composite_trapezoids (cairo_operator_t op,
0, 0,
x_dst, y_dst,
width, height,
- buffer, &gf);
+ buffer, &gf, count);
if (mask)
glitz_surface_destroy (mask);
diff --git a/src/cairo_glitz_surface.c b/src/cairo_glitz_surface.c
index 69fc82f2..ede5e96f 100644
--- a/src/cairo_glitz_surface.c
+++ b/src/cairo_glitz_surface.c
@@ -333,7 +333,7 @@ _glitz_surface_create_solid (glitz_surface_t *other,
if (format == NULL)
return NULL;
- surface = glitz_surface_create (drawable, format, 1, 1);
+ surface = glitz_surface_create (drawable, format, 1, 1, 0, NULL);
if (surface == NULL)
return NULL;
@@ -355,7 +355,6 @@ _glitz_ensure_target (glitz_surface_t *surface)
glitz_drawable_format_t templ;
glitz_format_t *format;
glitz_drawable_t *pbuffer;
- glitz_pbuffer_attributes_t attributes;
unsigned long mask;
int i;
@@ -397,21 +396,13 @@ _glitz_ensure_target (glitz_surface_t *surface)
if (!dformat)
return CAIRO_INT_STATUS_UNSUPPORTED;
- attributes.width = glitz_surface_get_width (surface);
- attributes.height = glitz_surface_get_height (surface);
- mask = GLITZ_PBUFFER_WIDTH_MASK | GLITZ_PBUFFER_HEIGHT_MASK;
-
- pbuffer = glitz_create_pbuffer_drawable (drawable, dformat,
- &attributes, mask);
+ pbuffer =
+ glitz_create_pbuffer_drawable (drawable, dformat,
+ glitz_surface_get_width (surface),
+ glitz_surface_get_height (surface));
if (!pbuffer)
return CAIRO_INT_STATUS_UNSUPPORTED;
- if (glitz_drawable_get_width (pbuffer) < attributes.width ||
- glitz_drawable_get_height (pbuffer) < attributes.height) {
- glitz_drawable_destroy (pbuffer);
- return CAIRO_INT_STATUS_UNSUPPORTED;
- }
-
glitz_surface_attach (surface, pbuffer,
GLITZ_DRAWABLE_BUFFER_FRONT_COLOR,
0, 0);
@@ -457,7 +448,7 @@ _cairo_glitz_surface_create_similar (void *abstract_src,
if (gformat == NULL)
return NULL;
- surface = glitz_surface_create (drawable, gformat, width, height);
+ surface = glitz_surface_create (drawable, gformat, width, height, 0, NULL);
if (surface == NULL)
return NULL;
@@ -510,7 +501,8 @@ _glitz_composite (glitz_operator_t op,
int width,
int height,
glitz_buffer_t *geometry,
- glitz_geometry_format_t *format)
+ glitz_geometry_format_t *format,
+ int count)
{
if (_glitz_ensure_target (dst))
return CAIRO_INT_STATUS_UNSUPPORTED;
@@ -518,9 +510,10 @@ _glitz_composite (glitz_operator_t op,
if (glitz_surface_get_status (dst))
return CAIRO_STATUS_NO_TARGET_SURFACE;
- glitz_set_geometry (dst,
- 0, 0,
- format, geometry);
+ if (geometry) {
+ glitz_set_geometry (dst, GLITZ_GEOMETRY_TYPE_VERTEX, format, geometry);
+ glitz_set_array (dst, 0, 2, count, 0, 0);
+ }
glitz_composite (op,
src,
@@ -531,7 +524,7 @@ _glitz_composite (glitz_operator_t op,
dst_x, dst_y,
width, height);
- glitz_set_geometry (dst, 0, 0, NULL, NULL);
+ glitz_set_geometry (dst, GLITZ_GEOMETRY_TYPE_NONE, NULL, NULL);
if (glitz_surface_get_status (dst) == GLITZ_STATUS_NOT_SUPPORTED)
return CAIRO_INT_STATUS_UNSUPPORTED;
@@ -589,7 +582,7 @@ _cairo_glitz_surface_composite (cairo_operator_t op,
mask_x, mask_y,
dst_x, dst_y,
width, height,
- NULL, NULL);
+ NULL, NULL, 0);
if (src_clone)
cairo_surface_destroy (&src_clone->base);
@@ -624,16 +617,16 @@ _cairo_glitz_surface_fill_rectangles (void *abstract_dst,
glitz_buffer_t *buffer;
glitz_geometry_format_t gf;
cairo_int_status_t status;
- int width, height;
+ int width, height, count;
void *data;
- gf.mode = GLITZ_GEOMETRY_MODE_DIRECT;
- gf.edge_hint = GLITZ_GEOMETRY_EDGE_HINT_SHARP;
- gf.primitive = GLITZ_GEOMETRY_PRIMITIVE_QUADS;
- gf.type = GLITZ_DATA_TYPE_FLOAT;
- gf.first = 0;
- gf.count = n_rects * 4;
+ gf.vertex.primitive = GLITZ_PRIMITIVE_QUADS;
+ gf.vertex.type = GLITZ_DATA_TYPE_FLOAT;
+ gf.vertex.bytes_per_vertex = 2 * sizeof (glitz_float_t);
+ gf.vertex.attributes = 0;
+ count = n_rects * 4;
+
data = malloc (n_rects * 8 * sizeof (glitz_float_t));
if (!data)
return CAIRO_STATUS_NO_MEMORY;
@@ -678,7 +671,7 @@ _cairo_glitz_surface_fill_rectangles (void *abstract_dst,
0, 0,
0, 0,
width, height,
- buffer, &gf);
+ buffer, &gf, count);
glitz_surface_destroy (solid);
glitz_buffer_destroy (buffer);
@@ -715,7 +708,7 @@ _cairo_glitz_surface_composite_trapezoids (cairo_operator_t op,
glitz_buffer_t *buffer;
glitz_geometry_format_t gf;
cairo_int_status_t status;
- int x_dst, y_dst, x_rel, y_rel, width, height;
+ int x_dst, y_dst, x_rel, y_rel, width, height, count;
void *data;
if (op == CAIRO_OPERATOR_SATURATE)
@@ -724,12 +717,12 @@ _cairo_glitz_surface_composite_trapezoids (cairo_operator_t op,
if (generic_src->backend != dst->base.backend)
return CAIRO_INT_STATUS_UNSUPPORTED;
- gf.mode = GLITZ_GEOMETRY_MODE_DIRECT;
- gf.edge_hint = GLITZ_GEOMETRY_EDGE_HINT_GOOD_SMOOTH;
- gf.primitive = GLITZ_GEOMETRY_PRIMITIVE_QUADS;
- gf.type = GLITZ_DATA_TYPE_FLOAT;
- gf.first = 0;
- gf.count = n_traps * 4;
+ gf.vertex.primitive = GLITZ_PRIMITIVE_QUADS;
+ gf.vertex.type = GLITZ_DATA_TYPE_FLOAT;
+ gf.vertex.bytes_per_vertex = 2 * sizeof (glitz_float_t);
+ gf.vertex.attributes = 0;
+
+ count = n_traps * 4;
data = malloc (n_traps * 8 * sizeof (glitz_float_t));
if (!data)
@@ -795,7 +788,7 @@ _cairo_glitz_surface_composite_trapezoids (cairo_operator_t op,
0, 0,
x_dst, y_dst,
width, height,
- buffer, &gf);
+ buffer, &gf, count);
if (mask)
glitz_surface_destroy (mask);