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

pixman: Changes to 'debian-experimental'



 ChangeLog                        |  115 +++++++++++++++++++++++++++++++++++++++
 README                           |   12 +---
 configure.ac                     |    5 +
 debian/changelog                 |   17 +++++
 pixman/pixman-compiler.h         |   77 ++++++++++++++++++++++++--
 pixman/pixman-conical-gradient.c |    4 +
 pixman/pixman-image.c            |    6 +-
 pixman/pixman-mmx.c              |    2 
 pixman/pixman.h                  |    3 -
 test/blitters-test.c             |    2 
 10 files changed, 224 insertions(+), 19 deletions(-)

New commits:
commit 1773c6829cd19974219feb6e0ddbfb735f1f2139
Author: Robert Hooker <sarvatt@ubuntu.com>
Date:   Fri May 14 12:57:58 2010 -0400

    Bump changelogs.

diff --git a/ChangeLog b/ChangeLog
index fb006a1..eb287c5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,118 @@
+commit b48d8b5201ab010f75f36bccd101cf60510d4ef2
+Author: Søren Sandmann Pedersen <ssp@redhat.com>
+Date:   Wed May 12 16:27:02 2010 -0400
+
+    Pre-release version bump to 0.18.2
+
+commit 970c183c339b32975b499e90dbc54617da6cf4cf
+Author: Søren Sandmann Pedersen <ssp@redhat.com>
+Date:   Sat Apr 24 18:43:38 2010 -0400
+
+    Add macros for thread local storage on MinGW 32
+    
+    These macros are identical to the ones that Tor Lillqvist posted here:
+    
+        http://lists.freedesktop.org/archives/pixman/2010-April/000160.html
+    
+    with one exception: the variable is allocated with calloc() and not
+    malloc().
+    
+    Cc: tml@iki.fi
+
+commit 61ff1a32146b4db1f7391f0ad6fbdcfda8001581
+Author: Søren Sandmann Pedersen <ssp@redhat.com>
+Date:   Fri Apr 23 12:34:19 2010 -0400
+
+    Don't use __thread on MinGW.
+    
+    It is apparently broken. See this:
+    
+    http://mingw-users.1079350.n2.nabble.com/gcc-4-4-multi-threaded-exception-handling-thread-specifier-not-working-td3440749.html
+    
+    We'll need to support thread local storage on MinGW32 some other way.
+    
+    Cc: tml@iki.fi
+
+commit f973be464d631f886ad812210cd26d3a989dc3bd
+Author: Søren Sandmann Pedersen <ssp@redhat.com>
+Date:   Sat Apr 24 15:15:05 2010 -0400
+
+    Don't consider indexed formats opaque.
+    
+    The indexed formats have 0 bits of alpha, but can't be considered
+    opaque because there may be non-opaque colors in the palette.
+
+commit 34fb38554f290c690be8b9f3f873538aa1945c57
+Author: Jeff Muizelaar <jmuizelaar@mozilla.com>
+Date:   Tue Apr 27 15:23:20 2010 -0400
+
+    Add missing HAVE_CONFIG_H guards for config.h inclusion
+
+commit 38928afaa119326b85eea099a71bc8c96a251164
+Author: Søren Sandmann Pedersen <ssp@redhat.com>
+Date:   Sun Apr 18 16:24:39 2010 -0400
+
+    Update README to mention the pixman mailing list
+
+commit 664984206daae8ac2de16b54ae6c66c926058c86
+Author: Søren Sandmann Pedersen <ssp@redhat.com>
+Date:   Wed Apr 7 19:34:41 2010 -0400
+
+    [mmx] Fix mask creation bugs
+    
+    This line:
+    
+        mask = mask | mask >> 8 | mask >> 16 | mask >> 24;
+    
+    only works when mask has 0s in the lower 24 bits, so add
+    
+         mask &= 0xff000000;
+    
+    before.
+    
+    Reported by Todd Rinaldo on the #cairo IRC channel.
+
+commit d197dc5e8d341fb4f252cde31ed62e2fef573475
+Author: Søren Sandmann Pedersen <ssp@redhat.com>
+Date:   Wed Apr 7 01:44:12 2010 -0400
+
+    Fixes for pthread thread local storage.
+    
+    The tls_name_key variable is passed to tls_name_get(), and the first
+    time this happens it isn't initialized. tls_name_get() then passes it
+    on to tls_name_alloc() which passes it on to pthread_setspecific()
+    leading to undefined behavior.
+    
+    None of this is actually necessary at all because there is only one
+    such variable per thread local variable, so it doesn't need to passed
+    as a parameter at all.
+    
+    All of this was pointed out by Tor Lillqvist on the cairo mailing
+    list.
+
+commit 9babaab40471bee35af6da581cb5bf83a2517aff
+Author: Søren Sandmann Pedersen <ssp@redhat.com>
+Date:   Wed Apr 7 01:39:14 2010 -0400
+
+    Fix uninitialized cache when pthreads are used
+    
+    The thread local cache is allocated with malloc(), but we rely on it
+    being initialized to zero, so allocate it with calloc() instead.
+
+commit 4fe0a40e75895d5d1a55810be2e1349810cba90e
+Author: Siddharth Agarwal <sid.bugzilla@gmail.com>
+Date:   Tue Apr 13 10:15:29 2010 -0400
+
+    Visual Studio 2010 includes stdint.h
+    
+    Use the builtin version instead of defining the types ourselves.
+
+commit 9a46eddc92ecaa2bf178e7dd5061f4d92163285d
+Author: Søren Sandmann Pedersen <ssp@redhat.com>
+Date:   Wed May 12 16:15:24 2010 -0400
+
+    Post-release version bump to 0.18.1
+
 commit e9dc568d6f585a153c47e970168a9c71d3e45fde
 Author: Søren Sandmann Pedersen <ssp@redhat.com>
 Date:   Thu Apr 1 05:23:31 2010 -0400
diff --git a/debian/changelog b/debian/changelog
index 7777d4c..30f8061 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,20 @@
+pixman (0.18.2-1) UNRELEASED; urgency=low
+
+  * New upstream stable release. Changes since 0.18.0:
+    - b48d8b5... Pre-release version bump to 0.18.2
+    - 970c183... Add macros for thread local storage on MinGW 32
+    - 61ff1a3... Don't use __thread on MinGW.
+    - f973be4... Don't consider indexed formats opaque.
+    - 34fb385... Add missing HAVE_CONFIG_H guards for config.h inclusion
+    - 38928af... Update README to mention the pixman mailing list
+    - 6649842... [mmx] Fix mask creation bugs
+    - d197dc5... Fixes for pthread thread local storage.
+    - 9babaab... Fix uninitialized cache when pthreads are used
+    - 4fe0a40... Visual Studio 2010 includes stdint.h
+    - 9a46edd... Post-release version bump to 0.18.1
+
+ -- Robert Hooker <sarvatt@ubuntu.com>  Fri, 14 May 2010 12:49:51 -0400
+
 pixman (0.18.0-1) experimental; urgency=low
 
   * Rename the build directory to not include DEB_BUILD_GNU_TYPE for no

commit b48d8b5201ab010f75f36bccd101cf60510d4ef2
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date:   Wed May 12 16:27:02 2010 -0400

    Pre-release version bump to 0.18.2

diff --git a/configure.ac b/configure.ac
index 65ae7a4..c89474d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -54,7 +54,7 @@ AC_PREREQ([2.57])
 
 m4_define([pixman_major], 0)
 m4_define([pixman_minor], 18)
-m4_define([pixman_micro], 1)
+m4_define([pixman_micro], 2)
 
 m4_define([pixman_version],[pixman_major.pixman_minor.pixman_micro])
 

commit 970c183c339b32975b499e90dbc54617da6cf4cf
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date:   Sat Apr 24 18:43:38 2010 -0400

    Add macros for thread local storage on MinGW 32
    
    These macros are identical to the ones that Tor Lillqvist posted here:
    
        http://lists.freedesktop.org/archives/pixman/2010-April/000160.html
    
    with one exception: the variable is allocated with calloc() and not
    malloc().
    
    Cc: tml@iki.fi

diff --git a/pixman/pixman-compiler.h b/pixman/pixman-compiler.h
index 531c8c9..1a1350d 100644
--- a/pixman/pixman-compiler.h
+++ b/pixman/pixman-compiler.h
@@ -77,6 +77,71 @@
 #   define PIXMAN_GET_THREAD_LOCAL(name)				\
     (&name)
 
+#elif defined(__MINGW32__) && !defined(__WIN64)
+
+/* We can't include <windows.h> as it causes carious clashes with
+ * identifiers in pixman, sigh. So just declare the functions we need
+ * here.
+ */
+extern __stdcall long InterlockedCompareExchange(long volatile *, long, long);
+#define InterlockedCompareExchangePointer(d,e,c)			\
+    (void *)InterlockedCompareExchange((long volatile *)(d),(long)(e),(long)(c))
+extern __stdcall int TlsAlloc (void);
+extern __stdcall void *TlsGetValue (unsigned);
+extern __stdcall int TlsSetValue (unsigned, void *);
+extern __stdcall void *CreateMutexA(void *, int, char *);
+extern __stdcall int CloseHandle(void *);
+extern __stdcall unsigned WaitForSingleObject (void *, unsigned);
+extern __stdcall int ReleaseMutex (void *);
+
+#   define PIXMAN_DEFINE_THREAD_LOCAL(type, name)			\
+    static volatile int tls_ ## name ## _initialized = 0;		\
+    static void *tls_ ## name ## _mutex = NULL;				\
+    static unsigned tls_ ## name ## _index;				\
+									\
+    static type *							\
+    tls_ ## name ## _alloc (void)					\
+    {									\
+        type *value = calloc (1, sizeof (type));			\
+        if (value)							\
+            TlsSetValue (tls_ ## name ## _index, value);		\
+        return value;							\
+    }									\
+									\
+    static force_inline type *						\
+    tls_ ## name ## _get (void)						\
+    {									\
+	type *value;							\
+	if (!tls_ ## name ## _initialized)				\
+	{								\
+	    if (!tls_ ## name ## _mutex)				\
+	    {								\
+		void *mutex = CreateMutexA (NULL, 0, NULL);		\
+		if (InterlockedCompareExchangePointer (			\
+			&tls_ ## name ## _mutex, mutex, NULL) != NULL)	\
+		{							\
+		    CloseHandle (mutex);				\
+		}							\
+	    }								\
+	    WaitForSingleObject (tls_ ## name ## _mutex, 0xFFFFFFFF);	\
+	    if (!tls_ ## name ## _initialized)				\
+	    {								\
+		tls_ ## name ## _index = TlsAlloc ();			\
+		tls_ ## name ## _initialized = 1;			\
+	    }								\
+	    ReleaseMutex (tls_ ## name ## _mutex);			\
+	}								\
+	if (tls_ ## name ## _index == 0xFFFFFFFF)			\
+	    return NULL;						\
+	value = TlsGetValue (tls_ ## name ## _index);			\
+	if (!value)							\
+	    value = tls_ ## name ## _alloc ();				\
+	return value;							\
+    }
+
+#   define PIXMAN_GET_THREAD_LOCAL(name)				\
+    tls_ ## name ## _get ()
+
 #elif defined(_MSC_VER)
 
 #   define PIXMAN_DEFINE_THREAD_LOCAL(type, name)			\

commit 61ff1a32146b4db1f7391f0ad6fbdcfda8001581
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date:   Fri Apr 23 12:34:19 2010 -0400

    Don't use __thread on MinGW.
    
    It is apparently broken. See this:
    
    http://mingw-users.1079350.n2.nabble.com/gcc-4-4-multi-threaded-exception-handling-thread-specifier-not-working-td3440749.html
    
    We'll need to support thread local storage on MinGW32 some other way.
    
    Cc: tml@iki.fi

diff --git a/configure.ac b/configure.ac
index c77b5d4..65ae7a4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -524,6 +524,9 @@ support_for__thread=no
 
 AC_MSG_CHECKING(for __thread)
 AC_COMPILE_IFELSE([
+#ifdef __MINGW32__
+#error MinGW has broken __thread support
+#endif
 __thread int x ;
 int main () { return 0; }
 ], support_for__thread=yes)

commit f973be464d631f886ad812210cd26d3a989dc3bd
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date:   Sat Apr 24 15:15:05 2010 -0400

    Don't consider indexed formats opaque.
    
    The indexed formats have 0 bits of alpha, but can't be considered
    opaque because there may be non-opaque colors in the palette.

diff --git a/pixman/pixman-image.c b/pixman/pixman-image.c
index 9b44aa9..03a39db 100644
--- a/pixman/pixman-image.c
+++ b/pixman/pixman-image.c
@@ -394,8 +394,10 @@ compute_image_info (pixman_image_t *image)
 	    }
 	}
 
-	if (image->common.repeat != PIXMAN_REPEAT_NONE &&
-	    !PIXMAN_FORMAT_A (image->bits.format))
+	if (image->common.repeat != PIXMAN_REPEAT_NONE				&&
+	    !PIXMAN_FORMAT_A (image->bits.format)				&&
+	    PIXMAN_FORMAT_TYPE (image->bits.format) != PIXMAN_TYPE_GRAY		&&
+	    PIXMAN_FORMAT_TYPE (image->bits.format) != PIXMAN_TYPE_COLOR)
 	{
 	    flags |= FAST_PATH_IS_OPAQUE;
 	}
diff --git a/test/blitters-test.c b/test/blitters-test.c
index 5e33031..18f871e 100644
--- a/test/blitters-test.c
+++ b/test/blitters-test.c
@@ -482,7 +482,7 @@ main (int argc, char *argv[])
 	    /* Predefined value for running with all the fastpath functions
 	       disabled. It needs to be updated every time when changes are
 	       introduced to this program or behavior of pixman changes! */
-	    if (crc == 0xA058F792)
+	    if (crc == 0x8F9F7DC1)
 	    {
 		printf ("blitters test passed\n");
 	    }

commit 34fb38554f290c690be8b9f3f873538aa1945c57
Author: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date:   Tue Apr 27 15:23:20 2010 -0400

    Add missing HAVE_CONFIG_H guards for config.h inclusion

diff --git a/pixman/pixman-conical-gradient.c b/pixman/pixman-conical-gradient.c
index 369a7a5..0341a8e 100644
--- a/pixman/pixman-conical-gradient.c
+++ b/pixman/pixman-conical-gradient.c
@@ -23,7 +23,11 @@
  * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
  * SOFTWARE.
  */
+
+#ifdef HAVE_CONFIG_H
 #include <config.h>
+#endif
+
 #include <stdlib.h>
 #include <math.h>
 #include "pixman-private.h"

commit 38928afaa119326b85eea099a71bc8c96a251164
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date:   Sun Apr 18 16:24:39 2010 -0400

    Update README to mention the pixman mailing list

diff --git a/README b/README
index 843b069..60dff45 100644
--- a/README
+++ b/README
@@ -3,16 +3,12 @@ features such as image compositing and trapezoid rasterization.
 
 Please submit bugs & patches to the libpixman bugzilla:
 
-       https://bugs.freedesktop.org/enter_bug.cgi?product=pixman
+        https://bugs.freedesktop.org/enter_bug.cgi?product=pixman
 
-All questions regarding this software should be directed to either the 
-Xorg mailing list:
+All questions regarding this software should be directed to the pixman
+mailing list:
 
-       http://lists.freedesktop.org/mailman/listinfo/xorg
-
-or the cairo mailing list:
-
-       http://lists.freedesktop.org/mailman/listinfo/cairo
+        http://lists.freedesktop.org/mailman/listinfo/pixman
 
 The master development code repository can be found at:
 

commit 664984206daae8ac2de16b54ae6c66c926058c86
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date:   Wed Apr 7 19:34:41 2010 -0400

    [mmx] Fix mask creation bugs
    
    This line:
    
        mask = mask | mask >> 8 | mask >> 16 | mask >> 24;
    
    only works when mask has 0s in the lower 24 bits, so add
    
         mask &= 0xff000000;
    
    before.
    
    Reported by Todd Rinaldo on the #cairo IRC channel.

diff --git a/pixman/pixman-mmx.c b/pixman/pixman-mmx.c
index e084e7f..d51b40c 100644
--- a/pixman/pixman-mmx.c
+++ b/pixman/pixman-mmx.c
@@ -1385,6 +1385,7 @@ mmx_composite_over_8888_n_8888 (pixman_implementation_t *imp,
     PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t, src_stride, src_line, 1);
 
     mask = _pixman_image_get_solid (mask_image, dst_image->bits.format);
+    mask &= 0xff000000;
     mask = mask | mask >> 8 | mask >> 16 | mask >> 24;
     vmask = load8888 (mask);
     srca = MC (4x00ff);
@@ -1470,6 +1471,7 @@ mmx_composite_over_x888_n_8888 (pixman_implementation_t *imp,
     PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t, src_stride, src_line, 1);
     mask = _pixman_image_get_solid (mask_image, dst_image->bits.format);
 
+    mask &= 0xff000000;
     mask = mask | mask >> 8 | mask >> 16 | mask >> 24;
     vmask = load8888 (mask);
     srca = MC (4x00ff);

commit d197dc5e8d341fb4f252cde31ed62e2fef573475
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date:   Wed Apr 7 01:44:12 2010 -0400

    Fixes for pthread thread local storage.
    
    The tls_name_key variable is passed to tls_name_get(), and the first
    time this happens it isn't initialized. tls_name_get() then passes it
    on to tls_name_alloc() which passes it on to pthread_setspecific()
    leading to undefined behavior.
    
    None of this is actually necessary at all because there is only one
    such variable per thread local variable, so it doesn't need to passed
    as a parameter at all.
    
    All of this was pointed out by Tor Lillqvist on the cairo mailing
    list.

diff --git a/pixman/pixman-compiler.h b/pixman/pixman-compiler.h
index cdac0d8..531c8c9 100644
--- a/pixman/pixman-compiler.h
+++ b/pixman/pixman-compiler.h
@@ -99,16 +99,16 @@
     }									\
 									\
     static type *							\
-    tls_ ## name ## _alloc (key)					\
+    tls_ ## name ## _alloc (void)					\
     {									\
 	type *value = calloc (1, sizeof (type));			\
 	if (value)							\
-	    pthread_setspecific (key, value);				\
+	    pthread_setspecific (tls_ ## name ## _key, value);		\
 	return value;							\
     }									\
 									\
     static force_inline type *						\
-    tls_ ## name ## _get (key)						\
+    tls_ ## name ## _get (void)						\
     {									\
 	type *value = NULL;						\
 	if (pthread_once (&tls_ ## name ## _once_control,		\
@@ -116,13 +116,13 @@
 	{								\
 	    value = pthread_getspecific (tls_ ## name ## _key);		\
 	    if (!value)							\
-		value = tls_ ## name ## _alloc (key);			\
+		value = tls_ ## name ## _alloc ();			\
 	}								\
 	return value;							\
     }
 
 #   define PIXMAN_GET_THREAD_LOCAL(name)				\
-    tls_ ## name ## _get (tls_ ## name ## _key)
+    tls_ ## name ## _get ()
 
 #else
 

commit 9babaab40471bee35af6da581cb5bf83a2517aff
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date:   Wed Apr 7 01:39:14 2010 -0400

    Fix uninitialized cache when pthreads are used
    
    The thread local cache is allocated with malloc(), but we rely on it
    being initialized to zero, so allocate it with calloc() instead.

diff --git a/pixman/pixman-compiler.h b/pixman/pixman-compiler.h
index a4e3f88..cdac0d8 100644
--- a/pixman/pixman-compiler.h
+++ b/pixman/pixman-compiler.h
@@ -101,7 +101,7 @@
     static type *							\
     tls_ ## name ## _alloc (key)					\
     {									\
-	type *value = malloc (sizeof (type));				\
+	type *value = calloc (1, sizeof (type));			\
 	if (value)							\
 	    pthread_setspecific (key, value);				\
 	return value;							\

commit 4fe0a40e75895d5d1a55810be2e1349810cba90e
Author: Siddharth Agarwal <sid.bugzilla@gmail.com>
Date:   Tue Apr 13 10:15:29 2010 -0400

    Visual Studio 2010 includes stdint.h
    
    Use the builtin version instead of defining the types ourselves.

diff --git a/pixman/pixman.h b/pixman/pixman.h
index 85fcc8c..964d04a 100644
--- a/pixman/pixman.h
+++ b/pixman/pixman.h
@@ -89,7 +89,8 @@ PIXMAN_BEGIN_DECLS
 
 #if defined (_SVR4) || defined (SVR4) || defined (__OpenBSD__) || defined (_sgi) || defined (__sun) || defined (sun) || defined (__digital__) || defined (__HP_cc)
 #  include <inttypes.h>
-#elif defined (_MSC_VER)
+/* VS 2010 (_MSC_VER 1600) has stdint.h */
+#elif defined (_MSC_VER) && _MSC_VER < 1600
 typedef __int8 int8_t;
 typedef unsigned __int8 uint8_t;
 typedef __int16 int16_t;

commit 9a46eddc92ecaa2bf178e7dd5061f4d92163285d
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date:   Wed May 12 16:15:24 2010 -0400

    Post-release version bump to 0.18.1

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


Reply to: