aboutsummaryrefslogtreecommitdiff
path: root/pixman
diff options
context:
space:
mode:
Diffstat (limited to 'pixman')
-rw-r--r--pixman/README12
-rw-r--r--pixman/configure27
-rw-r--r--pixman/configure.ac5
-rw-r--r--pixman/pixman/pixman-compiler.h77
-rw-r--r--pixman/pixman/pixman-conical-gradient.c4
-rw-r--r--pixman/pixman/pixman-image.c6
-rw-r--r--pixman/pixman/pixman-mmx.c2
-rw-r--r--pixman/pixman/pixman-version.h4
-rw-r--r--pixman/pixman/pixman.h3
-rw-r--r--pixman/test/blitters-test.c2
10 files changed, 109 insertions, 33 deletions
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 <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) \
@@ -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 <config.h>
+#endif
+
#include <stdlib.h>
#include <math.h>
#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 <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;
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");
}