update to cairo 1.12.8
from Brad. ok ajacoutot@
This commit is contained in:
parent
94a8e79e3b
commit
1e37bce3df
@ -1,25 +1,23 @@
|
||||
# $OpenBSD: Makefile,v 1.42 2012/09/26 15:04:09 sthen Exp $
|
||||
# $OpenBSD: Makefile,v 1.43 2012/11/12 12:29:07 eric Exp $
|
||||
|
||||
COMMENT= vector graphics library
|
||||
|
||||
DISTNAME= cairo-1.12.2
|
||||
SHARED_LIBS+= cairo 12.0
|
||||
DISTNAME= cairo-1.12.8
|
||||
SHARED_LIBS+= cairo 12.1
|
||||
SHARED_LIBS+= cairo-gobject 1.0
|
||||
SHARED_LIBS+= cairo-script-interpreter 1.0
|
||||
CATEGORIES= graphics
|
||||
DPB_PROPERTIES= parallel
|
||||
EXTRACT_SUFX= .tar.xz
|
||||
REVISION= 2
|
||||
|
||||
HOMEPAGE= http://cairographics.org/
|
||||
|
||||
MAINTAINER= Eric Faurot <eric@openbsd.org>
|
||||
|
||||
WANTLIB= GL X11 Xau Xdamage Xdmcp Xext Xfixes Xrender \
|
||||
Xxf86vm c drm expat ffi fontconfig freetype \
|
||||
glib-2.0 gobject-2.0 gthread-2.0 m pcre pixman-1 \
|
||||
png pthread-stubs pthread stdc++ xcb xcb-render \
|
||||
xcb-shm z
|
||||
WANTLIB= GL X11 Xau Xdamage Xdmcp Xext Xfixes Xrender Xxf86vm \
|
||||
drm expat ffi fontconfig freetype glib-2.0 gobject-2.0 \
|
||||
gthread-2.0 m pcre pixman-1 png pthread-stubs pthread \
|
||||
stdc++ xcb xcb-render xcb-shm z
|
||||
|
||||
# LGPLv2.1 / MPL 1.1
|
||||
PERMIT_PACKAGE_CDROM= Yes
|
||||
|
@ -1,2 +1,2 @@
|
||||
SHA256 (cairo-1.12.2.tar.xz) = t4a8SnBUK8sJ8tnRPl5qDIZAjL9tHt3l8N6Afuz5P5Y=
|
||||
SIZE (cairo-1.12.2.tar.xz) = 42051584
|
||||
SHA256 (cairo-1.12.8.tar.xz) = j7tvxmEXq0EAutgwy0R5SX5TxvP6y5i/BcjSmFVOvdk=
|
||||
SIZE (cairo-1.12.8.tar.xz) = 42113752
|
||||
|
@ -1,11 +1,11 @@
|
||||
$OpenBSD: patch-configure,v 1.10 2012/08/16 17:03:18 eric Exp $
|
||||
$OpenBSD: patch-configure,v 1.11 2012/11/12 12:29:07 eric Exp $
|
||||
|
||||
Use `Requires', not `Requires.private', because otherwise libraries
|
||||
required for linking aren't exposed.
|
||||
|
||||
--- configure.orig Sun Apr 29 14:49:59 2012
|
||||
+++ configure Mon Aug 6 00:31:32 2012
|
||||
@@ -17696,10 +17696,7 @@ if test "x$PKG_CONFIG" = x; then
|
||||
--- configure.orig Mon Oct 22 06:08:43 2012
|
||||
+++ configure Wed Oct 24 03:51:46 2012
|
||||
@@ -17954,10 +17954,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
|
||||
|
||||
|
@ -1,265 +0,0 @@
|
||||
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.
|
||||
|
||||
$OpenBSD: patch-src_cairo-polygon-reduce_c,v 1.1 2012/08/16 17:03:18 eric Exp $
|
||||
--- 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;
|
||||
}
|
@ -1,14 +1,12 @@
|
||||
$OpenBSD: patch-util_cairo-fdr_Makefile_in,v 1.1 2012/08/16 17:03:18 eric Exp $
|
||||
--- util/cairo-fdr/Makefile.in.orig Sun Apr 29 20:49:57 2012
|
||||
+++ util/cairo-fdr/Makefile.in Thu Aug 16 18:08:18 2012
|
||||
@@ -376,8 +376,8 @@ AM_CPPFLAGS = -I$(top_srcdir)/src \
|
||||
$OpenBSD: patch-util_cairo-fdr_Makefile_in,v 1.2 2012/11/12 12:29:07 eric Exp $
|
||||
--- util/cairo-fdr/Makefile.in.orig Mon Oct 22 06:08:40 2012
|
||||
+++ util/cairo-fdr/Makefile.in Wed Oct 24 03:52:52 2012
|
||||
@@ -379,7 +379,7 @@ AM_CPPFLAGS = -I$(top_srcdir)/src \
|
||||
cairo_fdr_la_SOURCES = fdr.c
|
||||
cairo_fdr_la_CPPFLAGS = $(AM_CPPFLAGS)
|
||||
cairo_fdr_la_CFLAGS = $(CAIRO_CFLAGS)
|
||||
-cairo_fdr_la_LDFLAGS = -module -no-undefined
|
||||
-cairo_fdr_la_LIBADD = -ldl
|
||||
+cairo_fdr_la_LDFLAGS = -module -no-undefined -avoid-version
|
||||
+cairo_fdr_la_LIBADD =
|
||||
@CAIRO_HAS_DL_TRUE@cairo_fdr_la_LIBADD = -ldl
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
|
@ -1,7 +1,7 @@
|
||||
$OpenBSD: patch-util_cairo-trace_Makefile_in,v 1.1 2012/08/26 17:22:27 eric Exp $
|
||||
--- util/cairo-trace/Makefile.in.orig Sun Aug 26 14:51:26 2012
|
||||
+++ util/cairo-trace/Makefile.in Sun Aug 26 14:51:03 2012
|
||||
@@ -396,7 +396,7 @@ libcairo_trace_la_CPPFLAGS = -DCAIRO_TRACE_OUTDIR="\"$
|
||||
$OpenBSD: patch-util_cairo-trace_Makefile_in,v 1.2 2012/11/12 12:29:07 eric Exp $
|
||||
--- util/cairo-trace/Makefile.in.orig Mon Oct 22 06:08:41 2012
|
||||
+++ util/cairo-trace/Makefile.in Wed Oct 24 03:51:46 2012
|
||||
@@ -399,7 +399,7 @@ libcairo_trace_la_CPPFLAGS = -DCAIRO_TRACE_OUTDIR="\"$
|
||||
$(AM_CPPFLAGS)
|
||||
|
||||
libcairo_trace_la_CFLAGS = $(CAIRO_CFLAGS) $(real_pthread_CFLAGS)
|
||||
|
Loading…
Reference in New Issue
Block a user