Hi. This diff updates cairo to 1.12.2 and integrates a bugfix. There is a known text display problem on some radeon chipsets which is fixed in an upcoming update of the ati driver.
Eric. Index: Makefile =================================================================== RCS file: /cvs/ports/graphics/cairo/Makefile,v retrieving revision 1.37 diff -u -p -u -r1.37 Makefile --- Makefile 1 Nov 2011 20:30:49 -0000 1.37 +++ Makefile 8 Aug 2012 14:17:58 -0000 @@ -2,13 +2,14 @@ COMMENT= vector graphics library -DISTNAME= cairo-1.10.2 -REVISION= 3 -SHARED_LIBS= cairo 11.1 -SHARED_LIBS+= cairo-trace 0.0 -SHARED_LIBS+= cairo-gobject 0.0 -SHARED_LIBS+= cairo-script-interpreter 0.0 +DISTNAME= cairo-1.12.2 +SHARED_LIBS= cairo 12.0 +SHARED_LIBS+= cairo-trace 1.0 +SHARED_LIBS+= cairo-gobject 1.0 +SHARED_LIBS+= cairo-script-interpreter 1.0 CATEGORIES= graphics + +EXTRACT_SUFX= .tar.xz HOMEPAGE= http://cairographics.org/introduction Index: distinfo =================================================================== RCS file: /cvs/ports/graphics/cairo/distinfo,v retrieving revision 1.18 diff -u -p -u -r1.18 distinfo --- distinfo 5 Jan 2011 13:26:05 -0000 1.18 +++ distinfo 8 Aug 2012 14:17:58 -0000 @@ -1,5 +1,2 @@ -MD5 (cairo-1.10.2.tar.gz) = 8QGp6It4MzeyCy4m39JtXw== -RMD160 (cairo-1.10.2.tar.gz) = jI3gASA5j+KzpgoI/1mkZLLuv0c= -SHA1 (cairo-1.10.2.tar.gz) = zM5a4D+ZxQXbl8KGoMmpCpJtPG4= -SHA256 (cairo-1.10.2.tar.gz) = MgGMeZg1juvCrVeP+NhVnTT8gCUglfEQpXLtI9mJ/EE= -SIZE (cairo-1.10.2.tar.gz) = 23558405 +SHA256 (cairo-1.12.2.tar.xz) = t4a8SnBUK8sJ8tnRPl5qDIZAjL9tHt3l8N6Afuz5P5Y= +SIZE (cairo-1.12.2.tar.xz) = 42051584 Index: patches/gcc2-patch-src_cairo-gl-private_h =================================================================== RCS file: /cvs/ports/graphics/cairo/patches/gcc2-patch-src_cairo-gl-private_h,v retrieving revision 1.1 diff -u -p -u -r1.1 gcc2-patch-src_cairo-gl-private_h --- patches/gcc2-patch-src_cairo-gl-private_h 5 Jan 2011 13:26:05 -0000 1.1 +++ patches/gcc2-patch-src_cairo-gl-private_h 8 Aug 2012 14:17:58 -0000 @@ -1,9 +1,9 @@ remove unnamed union to please gcc-2.95 $OpenBSD: gcc2-patch-src_cairo-gl-private_h,v 1.1 2011/01/05 13:26:05 eric Exp $ ---- src/cairo-gl-private.h.orig Mon Jan 3 12:23:14 2011 -+++ src/cairo-gl-private.h Mon Jan 3 12:23:40 2011 -@@ -142,7 +142,6 @@ typedef enum cairo_gl_var_type { +--- src/cairo-gl-private.h.orig Wed Apr 4 20:02:50 2012 ++++ src/cairo-gl-private.h Wed Apr 4 20:02:26 2012 +@@ -128,7 +128,6 @@ typedef enum cairo_gl_operand_type { */ typedef struct cairo_gl_operand { cairo_gl_operand_type_t type; @@ -11,10 +11,10 @@ $OpenBSD: gcc2-patch-src_cairo-gl-privat struct { GLuint tex; cairo_gl_surface_t *surface; -@@ -167,7 +166,6 @@ typedef struct cairo_gl_operand { - float radius_1; - cairo_extend_t extend; - } radial; +@@ -145,7 +144,6 @@ typedef struct cairo_gl_operand { + double radius_0, a; + cairo_extend_t extend; + } gradient; - }; unsigned int vertex_offset; } cairo_gl_operand_t; Index: patches/patch-configure =================================================================== RCS file: /cvs/ports/graphics/cairo/patches/patch-configure,v retrieving revision 1.9 diff -u -p -u -r1.9 patch-configure --- patches/patch-configure 28 Jun 2011 11:04:40 -0000 1.9 +++ patches/patch-configure 8 Aug 2012 14:17:58 -0000 @@ -3,9 +3,9 @@ $OpenBSD: patch-configure,v 1.9 2011/06/ Use `Requires', not `Requires.private', because otherwise libraries required for linking aren't exposed. ---- configure.orig Sat Dec 25 15:22:57 2010 -+++ configure Tue Jun 28 12:27:44 2011 -@@ -16983,10 +16983,7 @@ if test "x$PKG_CONFIG" = x; then +--- configure.orig Sun Apr 29 20:49:59 2012 ++++ configure Sun Aug 5 10:10:59 2012 +@@ -17696,10 +17696,7 @@ if test "x$PKG_CONFIG" = x; then as_fn_error $? "pkg-config >= $PKGCONFIG_REQUIRED required but not found (http://pkgconfig.freedesktop.org/)" "$LINENO" 5 fi Index: patches/patch-src_Makefile_in =================================================================== RCS file: /cvs/ports/graphics/cairo/patches/patch-src_Makefile_in,v retrieving revision 1.6 diff -u -p -u -r1.6 patch-src_Makefile_in --- patches/patch-src_Makefile_in 5 Jan 2011 13:26:05 -0000 1.6 +++ patches/patch-src_Makefile_in 8 Aug 2012 14:17:58 -0000 @@ -1,7 +1,7 @@ $OpenBSD: patch-src_Makefile_in,v 1.6 2011/01/05 13:26:05 eric Exp $ ---- src/Makefile.in.orig Sat Dec 25 15:22:52 2010 -+++ src/Makefile.in Mon Dec 27 10:07:21 2010 -@@ -2429,7 +2429,7 @@ cairo.def: cairo-features.h $(enabled_cairo_headers) +--- src/Makefile.in.orig Sun Apr 29 20:49:55 2012 ++++ src/Makefile.in Sun Aug 5 10:10:59 2012 +@@ -2712,7 +2712,7 @@ cairo.def: cairo-features.h $(enabled_cairo_headers) ) >$@ @ ! grep -q cairo_ERROR $@ || ($(RM) $@; false) Index: patches/patch-src_cairo-polygon-reduce_c =================================================================== RCS file: patches/patch-src_cairo-polygon-reduce_c diff -N patches/patch-src_cairo-polygon-reduce_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-src_cairo-polygon-reduce_c 8 Aug 2012 14:17:58 -0000 @@ -0,0 +1,271 @@ +From: Chris Wilson <ch...@chris-wilson.co.uk> +Date: Fri, 08 Jun 2012 16:22:41 +0000 +Subject: polygon-reduce: Reduce broken stopped-edge continuation + +This is hopefully a lesser used path and the attempted optimisation to +continue a stopped edge with a colinear stopped edge highly unlikely and +lost in the noise of the general inefficiency of the routine. As it was +broken, rather than attempt to rectify the "optimisation" remove it. + +Reported-by: Evangelos Foutras <evange...@foutrelis.com> +Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50852 +Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> + +$OpenBSD$ +--- src/cairo-polygon-reduce.c.orig Thu Apr 19 14:17:58 2012 ++++ src/cairo-polygon-reduce.c Sun Aug 5 10:17:23 2012 +@@ -42,6 +42,8 @@ + #include "cairo-freelist-private.h" + #include "cairo-combsort-inline.h" + ++#define DEBUG_POLYGON 0 ++ + typedef cairo_point_t cairo_bo_point32_t; + + typedef struct _cairo_bo_intersect_ordinate { +@@ -114,7 +116,6 @@ typedef struct _cairo_bo_event_queue { + + typedef struct _cairo_bo_sweep_line { + cairo_bo_edge_t *head; +- cairo_bo_edge_t *stopped; + int32_t current_y; + cairo_bo_edge_t *current_edge; + } cairo_bo_sweep_line_t; +@@ -476,8 +477,8 @@ edges_compare_x_for_y (const cairo_bo_edge_t *a, + static inline int + _line_equal (const cairo_line_t *a, const cairo_line_t *b) + { +- return a->p1.x == b->p1.x && a->p1.y == b->p1.y && +- a->p2.x == b->p2.x && a->p2.y == b->p2.y; ++ return (a->p1.x == b->p1.x && a->p1.y == b->p1.y && ++ a->p2.x == b->p2.x && a->p2.y == b->p2.y); + } + + static int +@@ -1024,7 +1025,6 @@ static void + _cairo_bo_sweep_line_init (cairo_bo_sweep_line_t *sweep_line) + { + sweep_line->head = NULL; +- sweep_line->stopped = NULL; + sweep_line->current_y = INT32_MIN; + sweep_line->current_edge = NULL; + } +@@ -1139,6 +1139,8 @@ edges_colinear (const cairo_bo_edge_t *a, const cairo_ + */ + if (a->edge.line.p1.y == b->edge.line.p1.y) { + return a->edge.line.p1.x == b->edge.line.p1.x; ++ } else if (a->edge.line.p2.y == b->edge.line.p2.y) { ++ return a->edge.line.p2.x == b->edge.line.p2.x; + } else if (a->edge.line.p1.y < b->edge.line.p1.y) { + return edge_compare_for_y_against_x (b, + a->edge.line.p1.y, +@@ -1205,82 +1207,48 @@ _active_edges_to_polygon (cairo_bo_edge_t *left, + cairo_polygon_t *polygon) + { + cairo_bo_edge_t *right; ++ unsigned int mask; + +- if (fill_rule == CAIRO_FILL_RULE_WINDING) { +- while (left != NULL) { +- int in_out = left->edge.dir; ++ if (fill_rule == CAIRO_FILL_RULE_WINDING) ++ mask = ~0; ++ else ++ mask = 1; + +- right = left->next; +- if (left->deferred.right == NULL) { +- while (right != NULL && right->deferred.right == NULL) +- right = right->next; ++ while (left != NULL) { ++ int in_out = left->edge.dir; + +- if (right != NULL && edges_colinear (left, right)) { +- /* continuation on left */ +- left->deferred = right->deferred; +- right->deferred.right = NULL; +- } +- } +- +- right = left->next; +- while (right != NULL) { +- if (right->deferred.right != NULL) +- _cairo_bo_edge_end (right, top, polygon); +- +- in_out += right->edge.dir; +- if (in_out == 0) { +- cairo_bo_edge_t *next; +- cairo_bool_t skip = FALSE; +- +- /* skip co-linear edges */ +- next = right->next; +- if (next != NULL) +- skip = edges_colinear (right, next); +- +- if (! skip) +- break; +- } +- ++ right = left->next; ++ if (left->deferred.right == NULL) { ++ while (right != NULL && right->deferred.right == NULL) + right = right->next; +- } + +- _cairo_bo_edge_start_or_continue (left, right, top, polygon); +- +- left = right; +- if (left != NULL) +- left = left->next; ++ if (right != NULL && edges_colinear (left, right)) { ++ /* continuation on left */ ++ left->deferred = right->deferred; ++ right->deferred.right = NULL; ++ } + } +- } else { +- while (left != NULL) { +- int in_out = 0; + +- right = left->next; +- while (right != NULL) { +- if (right->deferred.right != NULL) +- _cairo_bo_edge_end (right, top, polygon); ++ right = left->next; ++ while (right != NULL) { ++ if (right->deferred.right != NULL) ++ _cairo_bo_edge_end (right, top, polygon); + +- if ((in_out++ & 1) == 0) { +- cairo_bo_edge_t *next; +- cairo_bool_t skip = FALSE; +- +- /* skip co-linear edges */ +- next = right->next; +- if (next != NULL) +- skip = edges_colinear (right, next); +- +- if (! skip) +- break; +- } +- +- right = right->next; ++ in_out += right->edge.dir; ++ if ((in_out & mask) == 0) { ++ /* skip co-linear edges */ ++ if (right->next == NULL || !edges_colinear (right, right->next)) ++ break; + } + +- _cairo_bo_edge_start_or_continue (left, right, top, polygon); +- +- left = right; +- if (left != NULL) +- left = left->next; ++ right = right->next; + } ++ ++ _cairo_bo_edge_start_or_continue (left, right, top, polygon); ++ ++ left = right; ++ if (left != NULL) ++ left = left->next; + } + } + +@@ -1303,12 +1271,6 @@ _cairo_bentley_ottmann_tessellate_bo_edges (cairo_bo_e + + while ((event = _cairo_bo_event_dequeue (&event_queue))) { + if (event->point.y != sweep_line.current_y) { +- for (e1 = sweep_line.stopped; e1; e1 = e1->next) { +- if (e1->deferred.right != NULL) +- _cairo_bo_edge_end (e1, e1->edge.bottom, polygon); +- } +- sweep_line.stopped = NULL; +- + _active_edges_to_polygon (sweep_line.head, + sweep_line.current_y, + fill_rule, polygon); +@@ -1328,23 +1290,6 @@ _cairo_bentley_ottmann_tessellate_bo_edges (cairo_bo_e + if (unlikely (status)) + goto unwind; + +- /* check to see if this is a continuation of a stopped edge */ +- /* XXX change to an infinitesimal lengthening rule */ +- for (left = sweep_line.stopped; left; left = left->next) { +- if (e1->edge.top <= left->edge.bottom && +- edges_colinear (e1, left)) +- { +- e1->deferred = left->deferred; +- if (left->prev != NULL) +- left->prev = left->next; +- else +- sweep_line.stopped = left->next; +- if (left->next != NULL) +- left->next->prev = left->prev; +- break; +- } +- } +- + left = e1->prev; + right = e1->next; + +@@ -1371,14 +1316,8 @@ _cairo_bentley_ottmann_tessellate_bo_edges (cairo_bo_e + + _cairo_bo_sweep_line_delete (&sweep_line, e1); + +- /* first, check to see if we have a continuation via a fresh edge */ +- if (e1->deferred.right != NULL) { +- e1->next = sweep_line.stopped; +- if (sweep_line.stopped != NULL) +- sweep_line.stopped->prev = e1; +- sweep_line.stopped = e1; +- e1->prev = NULL; +- } ++ if (e1->deferred.right != NULL) ++ _cairo_bo_edge_end (e1, e1->edge.bottom, polygon); + + if (left != NULL && right != NULL) { + status = _cairo_bo_event_queue_insert_if_intersect_below_current_y (&event_queue, left, right); +@@ -1420,10 +1359,6 @@ _cairo_bentley_ottmann_tessellate_bo_edges (cairo_bo_e + } + } + +- for (e1 = sweep_line.stopped; e1; e1 = e1->next) { +- if (e1->deferred.right != NULL) +- _cairo_bo_edge_end (e1, e1->edge.bottom, polygon); +- } + unwind: + _cairo_bo_event_queue_fini (&event_queue); + +@@ -1447,6 +1382,12 @@ _cairo_polygon_reduce (cairo_polygon_t *polygon, + if (unlikely (0 == num_events)) + return CAIRO_STATUS_SUCCESS; + ++ if (DEBUG_POLYGON) { ++ FILE *file = fopen ("reduce_in.txt", "w"); ++ _cairo_debug_print_polygon (file, polygon); ++ fclose (file); ++ } ++ + events = stack_events; + event_ptrs = stack_event_ptrs; + if (num_events > ARRAY_LENGTH (stack_events)) { +@@ -1482,10 +1423,16 @@ _cairo_polygon_reduce (cairo_polygon_t *polygon, + num_events, + fill_rule, + polygon); +- polygon->num_limits = num_limits; ++ polygon->num_limits = num_limits; + + if (events != stack_events) + free (events); ++ ++ if (DEBUG_POLYGON) { ++ FILE *file = fopen ("reduce_out.txt", "w"); ++ _cairo_debug_print_polygon (file, polygon); ++ fclose (file); ++ } + + return status; + } Index: patches/patch-src_cairo-xlib-display_c =================================================================== RCS file: /cvs/ports/graphics/cairo/patches/patch-src_cairo-xlib-display_c,v retrieving revision 1.1 diff -u -p -u -r1.1 patch-src_cairo-xlib-display_c --- patches/patch-src_cairo-xlib-display_c 17 Oct 2010 12:50:53 -0000 1.1 +++ patches/patch-src_cairo-xlib-display_c 8 Aug 2012 14:17:58 -0000 @@ -1,7 +1,7 @@ $OpenBSD: patch-src_cairo-xlib-display_c,v 1.1 2010/10/17 12:50:53 eric Exp $ ---- src/cairo-xlib-display.c.orig Sat Oct 16 13:08:38 2010 -+++ src/cairo-xlib-display.c Sat Oct 16 13:08:56 2010 -@@ -353,11 +353,7 @@ _cairo_xlib_device_create (Display *dpy) +--- src/cairo-xlib-display.c.orig Wed Apr 25 11:53:19 2012 ++++ src/cairo-xlib-display.c Sun Aug 5 10:10:59 2012 +@@ -266,11 +266,7 @@ _cairo_xlib_device_create (Display *dpy) /* Prior to Render 0.10, there is no protocol support for gradients and * we call function stubs instead, which would silently consume the drawing. */ Index: patches/patch-util_Makefile_in =================================================================== RCS file: patches/patch-util_Makefile_in diff -N patches/patch-util_Makefile_in --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-util_Makefile_in 8 Aug 2012 14:17:58 -0000 @@ -0,0 +1,12 @@ +$OpenBSD$ +--- util/Makefile.in.orig Sun Aug 5 10:23:39 2012 ++++ util/Makefile.in Sun Aug 5 10:24:09 2012 +@@ -60,8 +60,6 @@ check_PROGRAMS = + @CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_1 = cairo-gobject + @CAIRO_HAS_INTERPRETER_TRUE@am__append_2 = cairo-script + @CAIRO_HAS_TRACE_TRUE@am__append_3 = cairo-trace +-@CAIRO_HAS_DLSYM_TRUE@@CAIRO_HAS_SCRIPT_SURFACE_TRUE@@CAIRO_HAS_TEE_SURFACE_TRUE@@CAIRO_HAS_TRACE_TRUE@am__append_4 = cairo-fdr +-@BUILD_SPHINX_TRUE@@CAIRO_HAS_DLSYM_TRUE@@CAIRO_HAS_SCRIPT_SURFACE_TRUE@@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_5 = cairo-sphinx + @CAIRO_HAS_INTERPRETER_TRUE@am__append_6 = trace-to-xml xml-to-trace + + #malloc_stats_la_LIBADD = $(backtrace_symbols_la_LIBADD) backtrace-symbols.lo Index: pkg/PLIST =================================================================== RCS file: /cvs/ports/graphics/cairo/pkg/PLIST,v retrieving revision 1.11 diff -u -p -u -r1.11 PLIST --- pkg/PLIST 4 May 2011 08:01:56 -0000 1.11 +++ pkg/PLIST 8 Aug 2012 14:17:58 -0000 @@ -10,6 +10,7 @@ include/cairo/cairo-gobject.h include/cairo/cairo-pdf.h include/cairo/cairo-ps.h include/cairo/cairo-script-interpreter.h +include/cairo/cairo-script.h include/cairo/cairo-svg.h include/cairo/cairo-tee.h include/cairo/cairo-version.h @@ -36,6 +37,7 @@ lib/pkgconfig/cairo-gobject.pc lib/pkgconfig/cairo-pdf.pc lib/pkgconfig/cairo-png.pc lib/pkgconfig/cairo-ps.pc +lib/pkgconfig/cairo-script.pc lib/pkgconfig/cairo-svg.pc lib/pkgconfig/cairo-tee.pc lib/pkgconfig/cairo-xcb-shm.pc @@ -65,16 +67,19 @@ share/gtk-doc/html/cairo/cairo-Paths.htm share/gtk-doc/html/cairo/cairo-PostScript-Surfaces.html share/gtk-doc/html/cairo/cairo-Quartz-(CGFont)-Fonts.html share/gtk-doc/html/cairo/cairo-Quartz-Surfaces.html +share/gtk-doc/html/cairo/cairo-Raster-Sources.html share/gtk-doc/html/cairo/cairo-Recording-Surfaces.html share/gtk-doc/html/cairo/cairo-Regions.html share/gtk-doc/html/cairo/cairo-SVG-Surfaces.html +share/gtk-doc/html/cairo/cairo-Script-Surfaces.html share/gtk-doc/html/cairo/cairo-Transformations.html share/gtk-doc/html/cairo/cairo-Types.html share/gtk-doc/html/cairo/cairo-User-Fonts.html -share/gtk-doc/html/cairo/cairo-Version-Information.html share/gtk-doc/html/cairo/cairo-Win32-Fonts.html share/gtk-doc/html/cairo/cairo-Win32-Surfaces.html +share/gtk-doc/html/cairo/cairo-XCB-Surfaces.html share/gtk-doc/html/cairo/cairo-XLib-Surfaces.html +share/gtk-doc/html/cairo/cairo-XLib-XRender-Backend.html share/gtk-doc/html/cairo/cairo-cairo-device-t.html share/gtk-doc/html/cairo/cairo-cairo-font-face-t.html share/gtk-doc/html/cairo/cairo-cairo-font-options-t.html @@ -88,10 +93,10 @@ share/gtk-doc/html/cairo/cairo-fonts.htm share/gtk-doc/html/cairo/cairo-support.html share/gtk-doc/html/cairo/cairo-surfaces.html share/gtk-doc/html/cairo/cairo-text.html -share/gtk-doc/html/cairo/cairo.devhelp share/gtk-doc/html/cairo/cairo.devhelp2 share/gtk-doc/html/cairo/home.png share/gtk-doc/html/cairo/index-1.10.html +share/gtk-doc/html/cairo/index-1.12.html share/gtk-doc/html/cairo/index-1.2.html share/gtk-doc/html/cairo/index-1.4.html share/gtk-doc/html/cairo/index-1.6.html