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

Reply via email to