From 8d1b881d540c3b60d287a8cbf86793024a353405 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sep 16 2012 21:47:47 +0000 Subject: fix a regression in path coordinate handling --- diff --git a/cairo-path-coords.patch b/cairo-path-coords.patch new file mode 100644 index 0000000..08841e8 --- /dev/null +++ b/cairo-path-coords.patch @@ -0,0 +1,73 @@ +From f34b87f6d76cbea93acd4a8c73c8c6a6b412a302 Mon Sep 17 00:00:00 2001 +From: Chris Wilson +Date: Mon, 10 Sep 2012 14:09:18 +0000 +Subject: path: Convert from backend coordinates back into user coordinates + +Fixes regression from commit 83bfd85a1378e61b8bdc3f554f5e07900311f61f +Author: Chris Wilson +Date: Fri Apr 23 19:45:26 2010 +0100 + + Implement cairo_backend_t + +As there exists no public API to perform the operation we needed, and we +failed to create one, the constructed path failed to correctly remove +the device offset. + +Fixes copy-path under device translation. + +Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=54732 +Reported-by: Benjamin Berg +Signed-off-by: Chris Wilson +--- +diff --git a/src/cairo-path.c b/src/cairo-path.c +index 5c48373..43cd175 100644 +--- a/src/cairo-path.c ++++ b/src/cairo-path.c +@@ -37,6 +37,7 @@ + #include "cairoint.h" + + #include "cairo-private.h" ++#include "cairo-backend-private.h" + #include "cairo-error-private.h" + #include "cairo-path-private.h" + #include "cairo-path-fixed-private.h" +@@ -152,7 +153,7 @@ _cpp_move_to (void *closure, + x = _cairo_fixed_to_double (point->x); + y = _cairo_fixed_to_double (point->y); + +- cairo_device_to_user (cpp->cr, &x, &y); ++ _cairo_backend_to_user (cpp->cr, &x, &y); + + data->header.type = CAIRO_PATH_MOVE_TO; + data->header.length = 2; +@@ -177,7 +178,7 @@ _cpp_line_to (void *closure, + x = _cairo_fixed_to_double (point->x); + y = _cairo_fixed_to_double (point->y); + +- cairo_device_to_user (cpp->cr, &x, &y); ++ _cairo_backend_to_user (cpp->cr, &x, &y); + + data->header.type = CAIRO_PATH_LINE_TO; + data->header.length = 2; +@@ -205,15 +206,15 @@ _cpp_curve_to (void *closure, + + x1 = _cairo_fixed_to_double (p1->x); + y1 = _cairo_fixed_to_double (p1->y); +- cairo_device_to_user (cpp->cr, &x1, &y1); ++ _cairo_backend_to_user (cpp->cr, &x1, &y1); + + x2 = _cairo_fixed_to_double (p2->x); + y2 = _cairo_fixed_to_double (p2->y); +- cairo_device_to_user (cpp->cr, &x2, &y2); ++ _cairo_backend_to_user (cpp->cr, &x2, &y2); + + x3 = _cairo_fixed_to_double (p3->x); + y3 = _cairo_fixed_to_double (p3->y); +- cairo_device_to_user (cpp->cr, &x3, &y3); ++ _cairo_backend_to_user (cpp->cr, &x3, &y3); + + data->header.type = CAIRO_PATH_CURVE_TO; + data->header.length = 4; +-- +cgit v0.9.0.2-2-gbebe + diff --git a/cairo.spec b/cairo.spec index 0d04067..5485ccf 100644 --- a/cairo.spec +++ b/cairo.spec @@ -5,7 +5,7 @@ Summary: A 2D graphics library Name: cairo Version: 1.12.2 -Release: 3%{?dist} +Release: 4%{?dist} URL: http://cairographics.org #VCS: git:git://git.freedesktop.org/git/cairo #Source0: http://cairographics.org/snapshots/%{name}-%{version}.tar.xz @@ -13,6 +13,9 @@ Source0: http://cairographics.org/releases/%{name}-%{version}.tar.xz License: LGPLv2 or MPLv1.1 Group: System Environment/Libraries +# upstream regression fix +Patch0: cairo-path-coords.patch + BuildRequires: pkgconfig BuildRequires: libXrender-devel BuildRequires: libX11-devel @@ -91,6 +94,7 @@ This package contains tools for working with the cairo graphics library. %prep %setup -q +%patch0 -p1 %build %configure --disable-static \ @@ -185,6 +189,9 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/cairo/ %changelog +* Sun Sep 16 2012 Matthias Clasen - 1.12.2-4 +- Fix a regression in patch coordinate handling + * Wed Jul 18 2012 Fedora Release Engineering - 1.12.2-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild