Hello community,

here is the log from the commit of package cairo for openSUSE:Factory checked 
in at 2013-04-07 14:20:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cairo (Old)
 and      /work/SRC/openSUSE:Factory/.cairo.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "cairo", Maintainer is "[email protected]"

Changes:
--------
--- /work/SRC/openSUSE:Factory/cairo/cairo.changes      2013-04-02 
11:39:48.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.cairo.new/cairo.changes 2013-04-07 
14:20:32.000000000 +0200
@@ -1,0 +2,7 @@
+Tue Apr  2 11:57:02 UTC 2013 - [email protected]
+
+- Add cairo-libpng16-v2.patch: Fix png usage with libpng 1.6:
+  call png_set_read_user_transform_fn() before
+  png_read_update_info() (bnc#810701)..
+
+-------------------------------------------------------------------

New:
----
  cairo-libpng16-v2.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ cairo.spec ++++++
--- /var/tmp/diff_new_pack.ZFC3vN/_old  2013-04-07 14:20:34.000000000 +0200
+++ /var/tmp/diff_new_pack.ZFC3vN/_new  2013-04-07 14:20:34.000000000 +0200
@@ -30,6 +30,8 @@
 Source99:       baselibs.conf
 # PATCH-FIX-UPSTREAM cairo-modules-no-version.patch fdo#29319 
[email protected] -- Build modules with -module -avoid-version.
 Patch0:         cairo-modules-no-version.patch
+# PATCH-FIX-UPSTREAM cairo-libpng16-v2.patch fdo#62779 bnc#810701 
[email protected] -- call png_set_read_user_transform_fn() before 
png_read_update_info()
+Patch1:         cairo-libpng16-v2.patch
 # These libraries are needed only for tests.
 # Do not enable tests in build systems, it causes build loop!
 #BuildRequires:  librsvg-devel poppler-devel
@@ -148,6 +150,7 @@
 %prep
 %setup -q
 %patch0 -p1
+%patch1
 
 %build
 # Needed by patch0

++++++ cairo-libpng16-v2.patch ++++++
http://lists.cairographics.org/archives/cairo/2013-March/024195.html
--- src/cairo-png.c     2012-03-29 12:05:32.000000000 +0200
+++ src/cairo-png.c     2013-03-30 09:13:50.817181600 +0100
@@ -497,6 +497,20 @@
     }
 }
 
+/* branches into premultiply_data or convert_bytes_to_data depending on color 
type */
+static void read_user_transform_func (png_structp png, png_row_infop row_info, 
png_bytep data)
+{
+    switch ((cairo_format_t) png_get_user_transform_ptr (png)) {
+        case CAIRO_FORMAT_ARGB32:
+            premultiply_data (png, row_info, data);
+            break;
+
+        case CAIRO_FORMAT_RGB24:
+            convert_bytes_to_data (png, row_info, data);
+            break;
+    }
+}
+
 static cairo_status_t
 stdio_read_func (void *closure, unsigned char *data, unsigned int size)
 {
@@ -623,6 +637,9 @@
 
     png_set_filler (png, 0xff, PNG_FILLER_AFTER);
 
+    /* this must be stored before calling png_read_update_info */
+    png_set_read_user_transform_fn (png, read_user_transform_func);
+
     /* recheck header after setting EXPAND options */
     png_read_update_info (png, info);
     png_get_IHDR (png, info,
@@ -643,15 +660,15 @@
 
        case PNG_COLOR_TYPE_RGB_ALPHA:
            format = CAIRO_FORMAT_ARGB32;
-           png_set_read_user_transform_fn (png, premultiply_data);
            break;
 
        case PNG_COLOR_TYPE_RGB:
            format = CAIRO_FORMAT_RGB24;
-           png_set_read_user_transform_fn (png, convert_bytes_to_data);
            break;
     }
 
+    png_set_user_transform_info (png, (void*) format, 0, 0);
+
     stride = cairo_format_stride_for_width (format, png_width);
     if (stride < 0) {
        surface = _cairo_surface_create_in_error (_cairo_error 
(CAIRO_STATUS_INVALID_STRIDE));
-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to