summaryrefslogtreecommitdiff
path: root/graphics/dia/patches/0017-Bug-660574-Avoid-cairo-going-into-an-endless-loop-wi.patch
diff options
context:
space:
mode:
authorMatteo Bernardini <ponce@slackbuilds.org>2013-11-26 20:37:39 +0100
committerRobby Workman <rworkman@slackbuilds.org>2013-11-28 00:13:12 -0600
commitbce367d60b7d2b66b871120f6d7f944193fe71e4 (patch)
tree5744afae76874af3766d6678c67f44deb17b8c28 /graphics/dia/patches/0017-Bug-660574-Avoid-cairo-going-into-an-endless-loop-wi.patch
parent114b7c7af8338af42bfce2efde7344c6e3e467b1 (diff)
downloadslackbuilds-bce367d60b7d2b66b871120f6d7f944193fe71e4.tar.gz
graphics/dia: Applied patches from upstream.
Signed-off-by: Matteo Bernardini <ponce@slackbuilds.org>
Diffstat (limited to 'graphics/dia/patches/0017-Bug-660574-Avoid-cairo-going-into-an-endless-loop-wi.patch')
-rw-r--r--graphics/dia/patches/0017-Bug-660574-Avoid-cairo-going-into-an-endless-loop-wi.patch42
1 files changed, 42 insertions, 0 deletions
diff --git a/graphics/dia/patches/0017-Bug-660574-Avoid-cairo-going-into-an-endless-loop-wi.patch b/graphics/dia/patches/0017-Bug-660574-Avoid-cairo-going-into-an-endless-loop-wi.patch
new file mode 100644
index 0000000000..04090c267e
--- /dev/null
+++ b/graphics/dia/patches/0017-Bug-660574-Avoid-cairo-going-into-an-endless-loop-wi.patch
@@ -0,0 +1,42 @@
+From eb4e80afe3f25b1d91f00bdd8dbf67e38adad1f8 Mon Sep 17 00:00:00 2001
+From: Hans Breuer <hans@breuer.org>
+Date: Fri, 16 Aug 2013 15:21:16 +0200
+Subject: [PATCH 17/24] Bug 660574 - Avoid cairo going into an endless loop
+ with too small arcs
+
+this should fix the issue with SADT flow arrow, although I could not reproduce it.
+---
+ plug-ins/cairo/diacairo-renderer.c | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/plug-ins/cairo/diacairo-renderer.c b/plug-ins/cairo/diacairo-renderer.c
+index cd13247..137411e 100644
+--- a/plug-ins/cairo/diacairo-renderer.c
++++ b/plug-ins/cairo/diacairo-renderer.c
+@@ -499,6 +499,7 @@ draw_arc(DiaRenderer *self,
+ DiaCairoRenderer *renderer = DIA_CAIRO_RENDERER (self);
+ Point start;
+ double a1, a2;
++ real onedu = 0.0;
+
+ DIAG_NOTE(g_message("draw_arc %fx%f <%f,<%f",
+ width, height, angle1, angle2));
+@@ -515,9 +516,12 @@ draw_arc(DiaRenderer *self,
+ a1 = - (angle1 / 180.0) * G_PI;
+ a2 = - (angle2 / 180.0) * G_PI;
+ /* FIXME: to handle width != height some cairo_scale/cairo_translate would be needed */
+- cairo_arc_negative (renderer->cr, center->x, center->y,
+- width > height ? height / 2.0 : width / 2.0, /* FIXME 2nd radius */
+- a1, a2);
++ ensure_minimum_one_device_unit (renderer, &onedu);
++ /* FIXME2: with too small arcs cairo goes into an endless loop */
++ if (height/2.0 > onedu && width/2.0 > onedu)
++ cairo_arc_negative (renderer->cr, center->x, center->y,
++ width > height ? height / 2.0 : width / 2.0, /* FIXME 2nd radius */
++ a1, a2);
+ cairo_stroke (renderer->cr);
+ DIAG_STATE(renderer->cr)
+ }
+--
+1.8.4.4
+