[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

pixman: Changes to 'debian-unstable'



 ChangeLog                        |  132 +++++++++++++++++++++++++++++++++++++++
 autogen.sh                       |    4 -
 configure.ac                     |    4 -
 debian/changelog                 |    7 ++
 pixman/pixman-bits-image.c       |   53 ++++++++++++---
 pixman/pixman-combine.c.template |    6 -
 pixman/pixman-cpu.c              |   56 +++++++++++++---
 pixman/pixman-gradient-walker.c  |    7 ++
 pixman/pixman-image.c            |    2 
 pixman/pixman-mmx.c              |   57 +++++++++++-----
 pixman/pixman.h                  |   12 ++-
 test/blitters-test.c             |    2 
 test/composite-traps-test.c      |    2 
 13 files changed, 289 insertions(+), 55 deletions(-)

New commits:
commit 11ddc57db95f45968dde9d68fafe7cf045ca22aa
Author: Cyril Brulebois <kibi@debian.org>
Date:   Thu Jan 19 12:23:22 2012 +0100

    Upload to unstable.

diff --git a/debian/changelog b/debian/changelog
index 19a1abe..0632779 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,9 +1,9 @@
-pixman (0.24.2-1) UNRELEASED; urgency=low
+pixman (0.24.2-1) unstable; urgency=low
 
   * New upstream release:
     - Stable bug fix release from the 0.24 branch.
 
- -- Cyril Brulebois <kibi@debian.org>  Thu, 19 Jan 2012 12:21:09 +0100
+ -- Cyril Brulebois <kibi@debian.org>  Thu, 19 Jan 2012 12:22:54 +0100
 
 pixman (0.24.0-1) unstable; urgency=low
 

commit cbde497236adc741ee91f15eef6b894d09d07151
Author: Cyril Brulebois <kibi@debian.org>
Date:   Thu Jan 19 12:21:28 2012 +0100

    Bump changelogs.

diff --git a/ChangeLog b/ChangeLog
index d8b2eca..6321839 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,135 @@
+commit 08070759c3eee28fc61a7bb56ed8e3c056410c97
+Author: Søren Sandmann Pedersen <ssp@redhat.com>
+Date:   Wed Jan 18 15:49:24 2012 -0500
+
+    Pre-release version bump to 0.24.2
+
+commit a9b4fa378b70412ccf065454be009c1f8da4003a
+Author: Søren Sandmann Pedersen <ssp@redhat.com>
+Date:   Sat Jan 7 16:48:00 2012 -0500
+
+    Fix bugs with alpha maps
+    
+    The alpha channel from the alpha map must be inserted as the new alpha
+    channel when a scanline is fetched from an image. Previously the alpha
+    map would overwrite the buffer instead. This wasn't caught be the
+    alpha map test because it would only verify that the resulting alpha
+    channel was correct, and not pay attention to incorrect color
+    channels.
+
+commit 7dd2b8ee7e1f3c817205cf510507f4b54562444b
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date:   Fri Dec 23 16:32:57 2011 -0800
+
+    Make mmx code compatible with Solaris Studio 12.3 compilers
+    
+    Rearranged some of the existing gcc & Intel compiler checks to allow
+    easier sharing of common cases among the compilers.
+    
+    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+commit ee500cb2b1abf04ba40a8abfe358f6211d6078d1
+Author: Søren Sandmann Pedersen <ssp@redhat.com>
+Date:   Thu Dec 22 11:37:26 2011 -0500
+
+    Reject trapezoids where top (botttom) is above (below) the edges
+    
+    When a trapezoid has a top/bottom that is above/below the left/right
+    edges, degenerate trapezoids become possible. For example the edge
+    could be very short and close to horizontal. If the bottom edge is far
+    below the bottom point of such a short edge, the result is that the
+    lower right corner of the trapezoid will be extremely far to the left.
+    
+    This kind of trapezoid causes overflows in the rasterization code, so
+    change pixman_trapezoid_valid() to reject them.
+
+commit 1398a2fae4ba63f824049507a3d87a09c0af9af2
+Author: Søren Sandmann Pedersen <ssp@redhat.com>
+Date:   Sun Dec 18 08:16:45 2011 -0500
+
+    Fix some signed overflow bugs
+    
+    In the macros for the PDF blend modes, two comp1_t variables are
+    multiplied together and then used as if the result were a
+    comp4_t. When comp1_t is a uint8_t, this is fine because they are
+    promoted to int, and the product of two uint8_ts fits in an
+    int. However, when comp1_t is uint16, the product does not necessarily
+    fit in an int, so casts are necessary.
+    
+    Fix for bug 43906, reported by Siarhei Siamashka.
+
+commit 419820cce6f7ecbf759166eecb6dd7380b301e98
+Author: Søren Sandmann Pedersen <ssp@redhat.com>
+Date:   Thu Jan 5 10:37:51 2012 -0500
+
+    pixman-image.c: Fix typo in pixman_image_set_transform()
+    
+    A parenthesis was misplaced so that the size argument to memcmp() was
+    always 0. The bug is harmless except that the flags might be
+    unnecessarily recomputed in some cases.
+    
+    A bug reporting this in Mozilla's fork was discovered here:
+    
+        https://bugzilla.mozilla.org/show_bug.cgi?id=710992
+
+commit 5bd74a7c96724e0abe9ddb472bd5e5cefc50ca9e
+Author: Colin Walters <walters@verbum.org>
+Date:   Wed Jan 4 08:06:05 2012 -0500
+
+    autogen.sh: Support GNOME Build API
+    
+    http://people.gnome.org/~walters/docs/build-api.txt
+
+commit dbb6148158bd1e915c4ac15c06e05a4eb9d29ade
+Author: Søren Sandmann Pedersen <ssp@redhat.com>
+Date:   Sun Dec 18 07:29:59 2011 -0500
+
+    gradient-walker: For NONE repeats, when x < 0 or x > 1, set both colors to 0
+    
+    ec7c9c2b6865b48b8bd14e4 introduced a bug where NONE gradients would be
+    misrendered, causing the area outside the gradient to be treated as a
+    (very) long fade to transparent.The problem was that a check for
+    positions outside the gradients were dropped in favor of relying on
+    the sentinels.
+    
+    Aside from misrendering, this also caused a signed integer overflow
+    when the code would compute a stepper size based on MIN_INT32.
+    
+    This patches fixes the issue by reinstating a check for these cases
+    and setting both the right and left colors to transparent black.
+
+commit b14fd2ad606baa4074b8cba8c58f6847d5840205
+Author: Bobby Salazar <bobby8934@gmail.com>
+Date:   Tue Dec 13 02:03:16 2011 -0500
+
+    Android Runtime Detection Support For ARM NEON
+    
+    This patch adds runtime detection support for the ARM NEON fast paths
+    for code compiled with the Android NDK. This is the only code change
+    needed to enable the ARM NEON pixman fast paths for the ever growing
+    Android platform (200 million+ smartphones, tablets, etc.). Just make
+    sure to #define USE_ARM_NEON in your makefile.
+
+commit 3c87d862d9bdfd4500927f9502c87815175e48c9
+Author: Naohiro Aota <naota@gentoo.org>
+Date:   Thu Nov 24 13:12:15 2011 +0100
+
+    Don't use non-POSIX test
+    
+    test "$test_CFLAGS" == "" &&         \
+    
+    may cause an error on some POSIX shells and uses a style which is not
+    consistent with the other tests in configure.ac
+    
+    Fixes https://bugs.freedesktop.org/show_bug.cgi?id=42588 and
+    https://bugs.gentoo.org/show_bug.cgi?id=387087
+
+commit c19a09b31473209cbe5a8e8d7d51618f4003cd5e
+Author: Søren Sandmann Pedersen <ssp@redhat.com>
+Date:   Wed Jan 18 15:35:09 2012 -0500
+
+    Post-release version bump to 0.24.1
+
 commit 973dc7d319f373fc1bbb91ea54e8a7116cfaa932
 Author: Søren Sandmann Pedersen <ssp@redhat.com>
 Date:   Sun Nov 6 16:10:33 2011 -0500
diff --git a/debian/changelog b/debian/changelog
index a36a5f0..19a1abe 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+pixman (0.24.2-1) UNRELEASED; urgency=low
+
+  * New upstream release:
+    - Stable bug fix release from the 0.24 branch.
+
+ -- Cyril Brulebois <kibi@debian.org>  Thu, 19 Jan 2012 12:21:09 +0100
+
 pixman (0.24.0-1) unstable; urgency=low
 
   * New upstream release.

commit 08070759c3eee28fc61a7bb56ed8e3c056410c97
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date:   Wed Jan 18 15:49:24 2012 -0500

    Pre-release version bump to 0.24.2

diff --git a/configure.ac b/configure.ac
index 73009c9..6e93cf8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -54,7 +54,7 @@ AC_PREREQ([2.57])
 
 m4_define([pixman_major], 0)
 m4_define([pixman_minor], 24)
-m4_define([pixman_micro], 1)
+m4_define([pixman_micro], 2)
 
 m4_define([pixman_version],[pixman_major.pixman_minor.pixman_micro])
 

commit a9b4fa378b70412ccf065454be009c1f8da4003a
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date:   Sat Jan 7 16:48:00 2012 -0500

    Fix bugs with alpha maps
    
    The alpha channel from the alpha map must be inserted as the new alpha
    channel when a scanline is fetched from an image. Previously the alpha
    map would overwrite the buffer instead. This wasn't caught be the
    alpha map test because it would only verify that the resulting alpha
    channel was correct, and not pay attention to incorrect color
    channels.

diff --git a/pixman/pixman-bits-image.c b/pixman/pixman-bits-image.c
index 99c0dfe..2f56de3 100644
--- a/pixman/pixman-bits-image.c
+++ b/pixman/pixman-bits-image.c
@@ -1294,12 +1294,27 @@ dest_get_scanline_narrow (pixman_iter_t *iter, const uint32_t *mask)
     image->bits.fetch_scanline_32 (image, x, y, width, buffer, mask);
     if (image->common.alpha_map)
     {
-	x -= image->common.alpha_origin_x;
-	y -= image->common.alpha_origin_y;
+	uint32_t *alpha;
+
+	if ((alpha = malloc (width * sizeof (uint32_t))))
+	{
+	    int i;
+
+	    x -= image->common.alpha_origin_x;
+	    y -= image->common.alpha_origin_y;
+
+	    image->common.alpha_map->fetch_scanline_32 (
+		(pixman_image_t *)image->common.alpha_map,
+		x, y, width, alpha, mask);
 
-	image->common.alpha_map->fetch_scanline_32 (
-	    (pixman_image_t *)image->common.alpha_map,
-	    x, y, width, buffer, mask);
+	    for (i = 0; i < width; ++i)
+	    {
+		buffer[i] &= ~0xff000000;
+		buffer[i] |= (alpha[i] & 0xff000000);
+	    }
+
+	    free (alpha);
+	}
     }
 
     return iter->buffer;
@@ -1312,17 +1327,33 @@ dest_get_scanline_wide (pixman_iter_t *iter, const uint32_t *mask)
     int             x      = iter->x;
     int             y      = iter->y;
     int             width  = iter->width;
-    uint32_t *	    buffer = iter->buffer;
+    uint64_t *	    buffer = (uint64_t *)iter->buffer;
 
     image->fetch_scanline_64 (
-	(pixman_image_t *)image, x, y, width, buffer, mask);
+	(pixman_image_t *)image, x, y, width, (uint32_t *)buffer, mask);
     if (image->common.alpha_map)
     {
-	x -= image->common.alpha_origin_x;
-	y -= image->common.alpha_origin_y;
+	uint64_t *alpha;
+
+	if ((alpha = malloc (width * sizeof (uint64_t))))
+	{
+	    int i;
+
+	    x -= image->common.alpha_origin_x;
+	    y -= image->common.alpha_origin_y;
 
-	image->common.alpha_map->fetch_scanline_64 (
-	    (pixman_image_t *)image->common.alpha_map, x, y, width, buffer, mask);
+	    image->common.alpha_map->fetch_scanline_64 (
+		(pixman_image_t *)image->common.alpha_map,
+		x, y, width, (uint32_t *)alpha, mask);
+
+	    for (i = 0; i < width; ++i)
+	    {
+		buffer[i] &= ~0xffff000000000000ULL;
+		buffer[i] |= (alpha[i] & 0xffff000000000000ULL);
+	    }
+
+	    free (alpha);
+	}
     }
 
     return iter->buffer;

commit 7dd2b8ee7e1f3c817205cf510507f4b54562444b
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Fri Dec 23 16:32:57 2011 -0800

    Make mmx code compatible with Solaris Studio 12.3 compilers
    
    Rearranged some of the existing gcc & Intel compiler checks to allow
    easier sharing of common cases among the compilers.
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

diff --git a/pixman/pixman-mmx.c b/pixman/pixman-mmx.c
index 5da1f66..937ce8f 100644
--- a/pixman/pixman-mmx.c
+++ b/pixman/pixman-mmx.c
@@ -77,17 +77,38 @@ _mm_empty (void)
 
 /* --------------- MMX primitives ------------------------------------- */
 
-#ifdef __GNUC__
+/* If __m64 is defined as a struct or union, then define M64_MEMBER to be
+ * the name of the member used to access the data.
+ * If __m64 requires using mm_cvt* intrinsics functions to convert between
+ * uint64_t and __m64 values, then define USE_CVT_INTRINSICS.
+ * If __m64 and uint64_t values can just be cast to each other directly,
+ * then define USE_M64_CASTS.
+ */
+#ifdef _MSC_VER
+# define M64_MEMBER m64_u64
+#elif defined(__ICC)
+# define USE_CVT_INTRINSICS
+#elif defined(__GNUC__)
+# define USE_M64_CASTS
+#elif defined(__SUNPRO_C)
+# if (__SUNPRO_C >= 0x5120) && !defined(__NOVECTORSIZE__)
+/* Solaris Studio 12.3 (Sun C 5.12) introduces __attribute__(__vector_size__)
+ * support, and defaults to using it to define __m64, unless __NOVECTORSIZE__
+ * is defined.   If it is used, then the mm_cvt* intrinsics must be used.
+ */
+#  define USE_CVT_INTRINSICS
+# else
+/* For Studio 12.2 or older, or when __attribute__(__vector_size__) is
+ * disabled, __m64 is defined as a struct containing "unsigned long long l_".
+ */
+#  define M64_MEMBER l_
+# endif
+#endif
+
+#if defined(USE_M64_CASTS) || defined(USE_CVT_INTRINSICS)
 typedef uint64_t mmxdatafield;
 #else
 typedef __m64 mmxdatafield;
-/* If __m64 is defined as a struct or union, define M64_MEMBER to be the
-   name of the member used to access the data */
-# ifdef _MSC_VER
-#  define M64_MEMBER m64_u64
-# elif defined(__SUNPRO_C)
-#  define M64_MEMBER l_
-# endif
 #endif
 
 typedef struct
@@ -113,7 +134,7 @@ typedef struct
 # define MMXDATA_INIT(field, val) { val ## UI64 }
 #elif defined(M64_MEMBER)       /* __m64 is a struct, not an integral type */
 # define MMXDATA_INIT(field, val) field =   { val ## ULL }
-#else                           /* __m64 is an integral type */
+#else                           /* mmxdatafield is an integral type */
 # define MMXDATA_INIT(field, val) field =   val ## ULL
 #endif
 
@@ -136,12 +157,10 @@ static const mmx_data_t c =
     MMXDATA_INIT (.mmx_000000000000ffff,         0x000000000000ffff),
 };
 
-#ifdef __GNUC__
-#    ifdef __ICC
-#        define MC(x) to_m64 (c.mmx_ ## x)
-#    else
-#        define MC(x) ((__m64)c.mmx_ ## x)
-#    endif
+#ifdef USE_CVT_INTRINSICS
+#    define MC(x) to_m64 (c.mmx_ ## x)
+#elif defined(USE_M64_CASTS)
+#    define MC(x) ((__m64)c.mmx_ ## x)
 #else
 #    define MC(x) c.mmx_ ## x
 #endif
@@ -149,14 +168,14 @@ static const mmx_data_t c =
 static force_inline __m64
 to_m64 (uint64_t x)
 {
-#ifdef __ICC
+#ifdef USE_CVT_INTRINSICS
     return _mm_cvtsi64_m64 (x);
 #elif defined M64_MEMBER        /* __m64 is a struct, not an integral type */
     __m64 res;
 
     res.M64_MEMBER = x;
     return res;
-#else                           /* __m64 is an integral type */
+#else /* USE_M64_CASTS */
     return (__m64)x;
 #endif
 }
@@ -164,12 +183,12 @@ to_m64 (uint64_t x)
 static force_inline uint64_t
 to_uint64 (__m64 x)
 {
-#ifdef __ICC
+#ifdef USE_CVT_INTRINSICS
     return _mm_cvtm64_si64 (x);
 #elif defined M64_MEMBER        /* __m64 is a struct, not an integral type */
     uint64_t res = x.M64_MEMBER;
     return res;
-#else                           /* __m64 is an integral type */
+#else /* USE_M64_CASTS */
     return (uint64_t)x;
 #endif
 }

commit ee500cb2b1abf04ba40a8abfe358f6211d6078d1
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date:   Thu Dec 22 11:37:26 2011 -0500

    Reject trapezoids where top (botttom) is above (below) the edges
    
    When a trapezoid has a top/bottom that is above/below the left/right
    edges, degenerate trapezoids become possible. For example the edge
    could be very short and close to horizontal. If the bottom edge is far
    below the bottom point of such a short edge, the result is that the
    lower right corner of the trapezoid will be extremely far to the left.
    
    This kind of trapezoid causes overflows in the rasterization code, so
    change pixman_trapezoid_valid() to reject them.

diff --git a/pixman/pixman.h b/pixman/pixman.h
index c57092a..ab04103 100644
--- a/pixman/pixman.h
+++ b/pixman/pixman.h
@@ -906,10 +906,14 @@ struct pixman_triangle
 };
 
 /* whether 't' is a well defined not obviously empty trapezoid */
-#define pixman_trapezoid_valid(t)				   \
-    ((t)->left.p1.y != (t)->left.p2.y &&			   \
-     (t)->right.p1.y != (t)->right.p2.y &&			   \
-     (int) ((t)->bottom - (t)->top) > 0)
+#define pixman_trapezoid_valid(t)					\
+    ((t)->left.p1.y != (t)->left.p2.y &&				\
+     (t)->right.p1.y != (t)->right.p2.y &&				\
+     (int) ((t)->bottom - (t)->top) > 0 &&				\
+     (t)->bottom <= (t)->left.p2.y &&					\
+     (t)->bottom <= (t)->right.p2.y &&					\
+     (t)->top >= (t)->left.p1.y &&					\
+     (t)->top >= (t)->right.p1.y)
 
 struct pixman_span_fix
 {
diff --git a/test/composite-traps-test.c b/test/composite-traps-test.c
index fa6d8a9..60affe3 100644
--- a/test/composite-traps-test.c
+++ b/test/composite-traps-test.c
@@ -252,6 +252,6 @@ test_composite (int      testnum,
 int
 main (int argc, const char *argv[])
 {
-    return fuzzer_test_main("composite traps", 40000, 0xE3112106,
+    return fuzzer_test_main("composite traps", 40000, 0x4346479C,
 			    test_composite, argc, argv);
 }

commit 1398a2fae4ba63f824049507a3d87a09c0af9af2
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date:   Sun Dec 18 08:16:45 2011 -0500

    Fix some signed overflow bugs
    
    In the macros for the PDF blend modes, two comp1_t variables are
    multiplied together and then used as if the result were a
    comp4_t. When comp1_t is a uint8_t, this is fine because they are
    promoted to int, and the product of two uint8_ts fits in an
    int. However, when comp1_t is uint16, the product does not necessarily
    fit in an int, so casts are necessary.
    
    Fix for bug 43906, reported by Siarhei Siamashka.

diff --git a/pixman/pixman-combine.c.template b/pixman/pixman-combine.c.template
index c17bcea..cd008d9 100644
--- a/pixman/pixman-combine.c.template
+++ b/pixman/pixman-combine.c.template
@@ -522,7 +522,7 @@ combine_multiply_ca (pixman_implementation_t *imp,
 	    UNcx4_MUL_UNc_ADD_UNcx4_MUL_UNc (result, isa, s, ida);	\
 	    								\
 	    *(dest + i) = result +					\
-		(DIV_ONE_UNc (sa * da) << A_SHIFT) +			\
+		(DIV_ONE_UNc (sa * (comp4_t)da) << A_SHIFT) +		\
 		(blend_ ## name (RED_c (d), da, RED_c (s), sa) << R_SHIFT) + \
 		(blend_ ## name (GREEN_c (d), da, GREEN_c (s), sa) << G_SHIFT) + \
 		(blend_ ## name (BLUE_c (d), da, BLUE_c (s), sa));	\
@@ -552,7 +552,7 @@ combine_multiply_ca (pixman_implementation_t *imp,
 	    UNcx4_MUL_UNcx4_ADD_UNcx4_MUL_UNc (result, ~m, s, ida);     \
             								\
 	    result +=							\
-	        (DIV_ONE_UNc (ALPHA_c (m) * da) << A_SHIFT) +		\
+	        (DIV_ONE_UNc (ALPHA_c (m) * (comp4_t)da) << A_SHIFT) +	\
 	        (blend_ ## name (RED_c (d), da, RED_c (s), RED_c (m)) << R_SHIFT) + \
 	        (blend_ ## name (GREEN_c (d), da, GREEN_c (s), GREEN_c (m)) << G_SHIFT) + \
 	        (blend_ ## name (BLUE_c (d), da, BLUE_c (s), BLUE_c (m))); \
@@ -926,7 +926,7 @@ PDF_SEPARABLE_BLEND_MODE (exclusion)
 	    blend_ ## name (c, dc, da, sc, sa);				\
             								\
 	    *(dest + i) = result +					\
-		(DIV_ONE_UNc (sa * da) << A_SHIFT) +			\
+		(DIV_ONE_UNc (sa * (comp4_t)da) << A_SHIFT) +		\
 		(DIV_ONE_UNc (c[0]) << R_SHIFT) +			\
 		(DIV_ONE_UNc (c[1]) << G_SHIFT) +			\
 		(DIV_ONE_UNc (c[2]));					\
diff --git a/test/blitters-test.c b/test/blitters-test.c
index 4f931c4..0252fd4 100644
--- a/test/blitters-test.c
+++ b/test/blitters-test.c
@@ -425,6 +425,6 @@ main (int argc, const char *argv[])
     }
 
     return fuzzer_test_main("blitters", 2000000,
-			    0x29137844,
+			    0x3EDA4108,
 			    test_composite, argc, argv);
 }

commit 419820cce6f7ecbf759166eecb6dd7380b301e98
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date:   Thu Jan 5 10:37:51 2012 -0500

    pixman-image.c: Fix typo in pixman_image_set_transform()
    
    A parenthesis was misplaced so that the size argument to memcmp() was
    always 0. The bug is harmless except that the flags might be
    unnecessarily recomputed in some cases.
    
    A bug reporting this in Mozilla's fork was discovered here:
    
        https://bugzilla.mozilla.org/show_bug.cgi?id=710992

diff --git a/pixman/pixman-image.c b/pixman/pixman-image.c
index 09d7cbc..20d87ae 100644
--- a/pixman/pixman-image.c
+++ b/pixman/pixman-image.c
@@ -634,7 +634,7 @@ pixman_image_set_transform (pixman_image_t *          image,
     }
 
     if (common->transform &&
-	memcmp (common->transform, transform, sizeof (pixman_transform_t) == 0))
+	memcmp (common->transform, transform, sizeof (pixman_transform_t)) == 0)
     {
 	return TRUE;
     }

commit 5bd74a7c96724e0abe9ddb472bd5e5cefc50ca9e
Author: Colin Walters <walters@verbum.org>
Date:   Wed Jan 4 08:06:05 2012 -0500

    autogen.sh: Support GNOME Build API
    
    http://people.gnome.org/~walters/docs/build-api.txt

diff --git a/autogen.sh b/autogen.sh
index 354f254..fc34bd5 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -9,4 +9,6 @@ cd $srcdir
 autoreconf -v --install || exit 1
 cd $ORIGDIR || exit $?
 
-$srcdir/configure "$@"
+if test -z "$NOCONFIGURE"; then
+    $srcdir/configure "$@"
+fi

commit dbb6148158bd1e915c4ac15c06e05a4eb9d29ade
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date:   Sun Dec 18 07:29:59 2011 -0500

    gradient-walker: For NONE repeats, when x < 0 or x > 1, set both colors to 0
    
    ec7c9c2b6865b48b8bd14e4 introduced a bug where NONE gradients would be
    misrendered, causing the area outside the gradient to be treated as a
    (very) long fade to transparent.The problem was that a check for
    positions outside the gradients were dropped in favor of relying on
    the sentinels.
    
    Aside from misrendering, this also caused a signed integer overflow
    when the code would compute a stepper size based on MIN_INT32.
    
    This patches fixes the issue by reinstating a check for these cases
    and setting both the right and left colors to transparent black.

diff --git a/pixman/pixman-gradient-walker.c b/pixman/pixman-gradient-walker.c
index 048039e..e7e724f 100644
--- a/pixman/pixman-gradient-walker.c
+++ b/pixman/pixman-gradient-walker.c
@@ -108,6 +108,13 @@ gradient_walker_reset (pixman_gradient_walker_t *walker,
 	left_x  += (pos - x);
 	right_x += (pos - x);
     }
+    else if (walker->repeat == PIXMAN_REPEAT_NONE)
+    {
+	if (n == 0)
+	    right_c = left_c;
+	else if (n == count)
+	    left_c = right_c;
+    }
 
     walker->left_x   = left_x;
     walker->right_x  = right_x;

commit b14fd2ad606baa4074b8cba8c58f6847d5840205
Author: Bobby Salazar <bobby8934@gmail.com>
Date:   Tue Dec 13 02:03:16 2011 -0500

    Android Runtime Detection Support For ARM NEON
    
    This patch adds runtime detection support for the ARM NEON fast paths
    for code compiled with the Android NDK. This is the only code change
    needed to enable the ARM NEON pixman fast paths for the ever growing
    Android platform (200 million+ smartphones, tablets, etc.). Just make
    sure to #define USE_ARM_NEON in your makefile.

diff --git a/pixman/pixman-cpu.c b/pixman/pixman-cpu.c
index dff27d1..4172e52 100644
--- a/pixman/pixman-cpu.c
+++ b/pixman/pixman-cpu.c
@@ -244,6 +244,43 @@ pixman_have_arm_neon (void)
 
 #endif /* USE_ARM_NEON */
 
+#elif defined (__linux__) || defined(__ANDROID__) || defined(ANDROID) /* linux ELF or ANDROID */
+
+static pixman_bool_t arm_has_v7 = FALSE;
+static pixman_bool_t arm_has_v6 = FALSE;
+static pixman_bool_t arm_has_vfp = FALSE;
+static pixman_bool_t arm_has_neon = FALSE;
+static pixman_bool_t arm_has_iwmmxt = FALSE;
+static pixman_bool_t arm_tests_initialized = FALSE;
+
+#if defined(__ANDROID__) || defined(ANDROID) /* Android device support */
+
+#include <cpu-features.h>
+
+static void
+pixman_arm_read_auxv_or_cpu_features ()
+{
+    AndroidCpuFamily cpu_family;
+    uint64_t cpu_features;
+
+    cpu_family = android_getCpuFamily();
+    cpu_features = android_getCpuFeatures();
+
+    if (cpu_family == ANDROID_CPU_FAMILY_ARM)
+    {
+	if (cpu_features & ANDROID_CPU_ARM_FEATURE_ARMv7)
+	    arm_has_v7 = TRUE;
+	
+	if (cpu_features & ANDROID_CPU_ARM_FEATURE_VFPv3)
+	    arm_has_vfp = TRUE;
+	
+	if (cpu_features & ANDROID_CPU_ARM_FEATURE_NEON)
+	    arm_has_neon = TRUE;
+    }
+
+    arm_tests_initialized = TRUE;
+}
+
 #elif defined (__linux__) /* linux ELF */
 
 #include <stdlib.h>
@@ -255,15 +292,8 @@ pixman_have_arm_neon (void)
 #include <string.h>
 #include <elf.h>
 
-static pixman_bool_t arm_has_v7 = FALSE;
-static pixman_bool_t arm_has_v6 = FALSE;
-static pixman_bool_t arm_has_vfp = FALSE;
-static pixman_bool_t arm_has_neon = FALSE;
-static pixman_bool_t arm_has_iwmmxt = FALSE;
-static pixman_bool_t arm_tests_initialized = FALSE;
-
 static void
-pixman_arm_read_auxv ()
+pixman_arm_read_auxv_or_cpu_features ()
 {
     int fd;
     Elf32_auxv_t aux;
@@ -304,12 +334,14 @@ pixman_arm_read_auxv ()
     arm_tests_initialized = TRUE;
 }
 
+#endif /* Linux elf */
+
 #if defined(USE_ARM_SIMD)
 pixman_bool_t
 pixman_have_arm_simd (void)
 {
     if (!arm_tests_initialized)
-	pixman_arm_read_auxv ();
+	pixman_arm_read_auxv_or_cpu_features ();
 
     return arm_has_v6;
 }
@@ -321,7 +353,7 @@ pixman_bool_t
 pixman_have_arm_neon (void)
 {
     if (!arm_tests_initialized)
-	pixman_arm_read_auxv ();
+	pixman_arm_read_auxv_or_cpu_features ();
 
     return arm_has_neon;
 }
@@ -333,14 +365,14 @@ pixman_bool_t
 pixman_have_arm_iwmmxt (void)
 {
     if (!arm_tests_initialized)
-	pixman_arm_read_auxv ();
+	pixman_arm_read_auxv_or_cpu_features ();
 
     return arm_has_iwmmxt;
 }
 
 #endif /* USE_ARM_IWMMXT */
 
-#else /* linux ELF */
+#else /* !_MSC_VER && !Linux elf && !Android */
 
 #define pixman_have_arm_simd() FALSE
 #define pixman_have_arm_neon() FALSE

commit 3c87d862d9bdfd4500927f9502c87815175e48c9
Author: Naohiro Aota <naota@gentoo.org>
Date:   Thu Nov 24 13:12:15 2011 +0100

    Don't use non-POSIX test
    
    test "$test_CFLAGS" == "" &&         \
    
    may cause an error on some POSIX shells and uses a style which is not
    consistent with the other tests in configure.ac
    
    Fixes https://bugs.freedesktop.org/show_bug.cgi?id=42588 and
    https://bugs.gentoo.org/show_bug.cgi?id=387087

diff --git a/configure.ac b/configure.ac
index ea38588..73009c9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -150,7 +150,7 @@ AC_CHECK_DECL([__amd64], [AMD64_ABI="yes"], [AMD64_ABI="no"])
 # if we're using Sun Studio and neither the user nor a config.site
 # has set CFLAGS.
 if test $SUNCC = yes &&			\
-   test "$test_CFLAGS" == "" &&		\
+   test "x$test_CFLAGS" = "x" &&	\
    test "$CFLAGS" = "-g"
 then
   CFLAGS="-O -g"

commit c19a09b31473209cbe5a8e8d7d51618f4003cd5e
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date:   Wed Jan 18 15:35:09 2012 -0500

    Post-release version bump to 0.24.1

diff --git a/configure.ac b/configure.ac
index ebdb70c..ea38588 100644
--- a/configure.ac
+++ b/configure.ac
@@ -54,7 +54,7 @@ AC_PREREQ([2.57])
 
 m4_define([pixman_major], 0)
 m4_define([pixman_minor], 24)
-m4_define([pixman_micro], 0)
+m4_define([pixman_micro], 1)
 
 m4_define([pixman_version],[pixman_major.pixman_minor.pixman_micro])
 


Reply to: