From 39dd4fe6755ee1702107b613a8837196d8cab93e Mon Sep 17 00:00:00 2001 From: marha Date: Tue, 18 May 2010 20:02:13 +0000 Subject: Update to pixman-0.18.2 --- pixman/README | 12 ++--- pixman/configure | 27 +++++++----- pixman/configure.ac | 5 ++- pixman/pixman/pixman-compiler.h | 77 ++++++++++++++++++++++++++++++--- pixman/pixman/pixman-conical-gradient.c | 4 ++ pixman/pixman/pixman-image.c | 6 ++- pixman/pixman/pixman-mmx.c | 2 + pixman/pixman/pixman-version.h | 4 +- pixman/pixman/pixman.h | 3 +- pixman/test/blitters-test.c | 2 +- 10 files changed, 109 insertions(+), 33 deletions(-) (limited to 'pixman') diff --git a/pixman/README b/pixman/README index 843b06980..60dff4561 100644 --- a/pixman/README +++ b/pixman/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: diff --git a/pixman/configure b/pixman/configure index ffba51473..97b2b13e8 100644 --- a/pixman/configure +++ b/pixman/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.65 for pixman 0.18.0. +# Generated by GNU Autoconf 2.65 for pixman 0.18.2. # # Report bugs to <"pixman@lists.freedesktop.org">. # @@ -701,8 +701,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='pixman' PACKAGE_TARNAME='pixman' -PACKAGE_VERSION='0.18.0' -PACKAGE_STRING='pixman 0.18.0' +PACKAGE_VERSION='0.18.2' +PACKAGE_STRING='pixman 0.18.2' PACKAGE_BUGREPORT='"pixman@lists.freedesktop.org"' PACKAGE_URL='' @@ -1466,7 +1466,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures pixman 0.18.0 to adapt to many kinds of systems. +\`configure' configures pixman 0.18.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1536,7 +1536,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of pixman 0.18.0:";; + short | recursive ) echo "Configuration of pixman 0.18.2:";; esac cat <<\_ACEOF @@ -1651,7 +1651,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -pixman configure 0.18.0 +pixman configure 0.18.2 generated by GNU Autoconf 2.65 Copyright (C) 2009 Free Software Foundation, Inc. @@ -2146,7 +2146,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by pixman $as_me 0.18.0, which was +It was created by pixman $as_me 0.18.2, which was generated by GNU Autoconf 2.65. Invocation command line was $ $0 $@ @@ -2954,7 +2954,7 @@ fi # Define the identity of the package. PACKAGE='pixman' - VERSION='0.18.0' + VERSION='0.18.2' cat >>confdefs.h <<_ACEOF @@ -11086,13 +11086,13 @@ fi -LT_VERSION_INFO="18:0:18" +LT_VERSION_INFO="18:2:18" PIXMAN_VERSION_MAJOR=0 PIXMAN_VERSION_MINOR=18 -PIXMAN_VERSION_MICRO=0 +PIXMAN_VERSION_MICRO=2 @@ -11910,6 +11910,9 @@ $as_echo_n "checking for __thread... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ +#ifdef __MINGW32__ +#error MinGW has broken __thread support +#endif __thread int x ; int main () { return 0; } @@ -12558,7 +12561,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by pixman $as_me 0.18.0, which was +This file was extended by pixman $as_me 0.18.2, which was generated by GNU Autoconf 2.65. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -12624,7 +12627,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -pixman config.status 0.18.0 +pixman config.status 0.18.2 configured by $0, generated by GNU Autoconf 2.65, with options \\"\$ac_cs_config\\" diff --git a/pixman/configure.ac b/pixman/configure.ac index d13b6e6f9..c89474de2 100644 --- a/pixman/configure.ac +++ b/pixman/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], 2) m4_define([pixman_version],[pixman_major.pixman_minor.pixman_micro]) @@ -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) diff --git a/pixman/pixman/pixman-compiler.h b/pixman/pixman/pixman-compiler.h index a4e3f88bc..1a1350ddc 100644 --- a/pixman/pixman/pixman-compiler.h +++ b/pixman/pixman/pixman-compiler.h @@ -77,6 +77,71 @@ # define PIXMAN_GET_THREAD_LOCAL(name) \ (&name) +#elif defined(__MINGW32__) && !defined(__WIN64) + +/* We can't include 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) \ @@ -99,16 +164,16 @@ } \ \ static type * \ - tls_ ## name ## _alloc (key) \ + tls_ ## name ## _alloc (void) \ { \ - type *value = malloc (sizeof (type)); \ + 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 +181,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 diff --git a/pixman/pixman/pixman-conical-gradient.c b/pixman/pixman/pixman-conical-gradient.c index 369a7a58f..0341a8ebf 100644 --- a/pixman/pixman/pixman-conical-gradient.c +++ b/pixman/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 +#endif + #include #include #include "pixman-private.h" diff --git a/pixman/pixman/pixman-image.c b/pixman/pixman/pixman-image.c index 9b44aa9d8..03a39db87 100644 --- a/pixman/pixman/pixman-image.c +++ b/pixman/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/pixman/pixman/pixman-mmx.c b/pixman/pixman/pixman-mmx.c index e084e7ff1..d51b40cc1 100644 --- a/pixman/pixman/pixman-mmx.c +++ b/pixman/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); diff --git a/pixman/pixman/pixman-version.h b/pixman/pixman/pixman-version.h index ff0cc1835..4d67673d4 100644 --- a/pixman/pixman/pixman-version.h +++ b/pixman/pixman/pixman-version.h @@ -33,9 +33,9 @@ #define PIXMAN_VERSION_MAJOR 0 #define PIXMAN_VERSION_MINOR 18 -#define PIXMAN_VERSION_MICRO 0 +#define PIXMAN_VERSION_MICRO 2 -#define PIXMAN_VERSION_STRING "0.18.0" +#define PIXMAN_VERSION_STRING "0.18.2" #define PIXMAN_VERSION_ENCODE(major, minor, micro) ( \ ((major) * 10000) \ diff --git a/pixman/pixman/pixman.h b/pixman/pixman/pixman.h index 85fcc8c28..964d04ab9 100644 --- a/pixman/pixman/pixman.h +++ b/pixman/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 -#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; diff --git a/pixman/test/blitters-test.c b/pixman/test/blitters-test.c index 5e33031e4..18f871eae 100644 --- a/pixman/test/blitters-test.c +++ b/pixman/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"); } -- cgit v1.2.3