Bug-fix upgrade to pixman 0.20.2. No API/ABI change.

tested by shadchin@, ajacoutot@, krw@, ok miod@
This commit is contained in:
matthieu 2011-01-22 08:32:55 +00:00
parent 47b6998e0f
commit cf9b06cfa2
10 changed files with 92 additions and 41 deletions

27
lib/pixman/configure vendored
View File

@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.62 for pixman 0.20.0.
# Generated by GNU Autoconf 2.62 for pixman 0.20.2.
#
# Report bugs to <"pixman@lists.freedesktop.org">.
#
@ -750,8 +750,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='pixman'
PACKAGE_TARNAME='pixman'
PACKAGE_VERSION='0.20.0'
PACKAGE_STRING='pixman 0.20.0'
PACKAGE_VERSION='0.20.2'
PACKAGE_STRING='pixman 0.20.2'
PACKAGE_BUGREPORT='"pixman@lists.freedesktop.org"'
# Factoring default headers for most tests.
@ -1529,7 +1529,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.20.0 to adapt to many kinds of systems.
\`configure' configures pixman 0.20.2 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1599,7 +1599,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of pixman 0.20.0:";;
short | recursive ) echo "Configuration of pixman 0.20.2:";;
esac
cat <<\_ACEOF
@ -1722,7 +1722,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
pixman configure 0.20.0
pixman configure 0.20.2
generated by GNU Autoconf 2.62
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@ -1736,7 +1736,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.20.0, which was
It was created by pixman $as_me 0.20.2, which was
generated by GNU Autoconf 2.62. Invocation command line was
$ $0 $@
@ -2385,7 +2385,7 @@ fi
# Define the identity of the package.
PACKAGE='pixman'
VERSION='0.20.0'
VERSION='0.20.2'
cat >>confdefs.h <<_ACEOF
@ -21074,13 +21074,13 @@ fi
LT_VERSION_INFO="20:0:20"
LT_VERSION_INFO="20:2:20"
PIXMAN_VERSION_MAJOR=0
PIXMAN_VERSION_MINOR=20
PIXMAN_VERSION_MICRO=0
PIXMAN_VERSION_MICRO=2
@ -23644,10 +23644,9 @@ support_for__thread=no
$as_echo_n "checking for __thread... " >&6; }
cat >conftest.$ac_ext <<_ACEOF
#ifdef defined __MINGW32__ && !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5))
#if defined(__MINGW32__) && !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5))
#error This MinGW version has broken __thread support
#endif
#endif
#ifdef __OpenBSD__
#error OpenBSD has broken __thread support
#endif
@ -24492,7 +24491,7 @@ exec 6>&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.20.0, which was
This file was extended by pixman $as_me 0.20.2, which was
generated by GNU Autoconf 2.62. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@ -24545,7 +24544,7 @@ Report bugs to <bug-autoconf@gnu.org>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_version="\\
pixman config.status 0.20.0
pixman config.status 0.20.2
configured by $0, generated by GNU Autoconf 2.62,
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"

View File

@ -54,7 +54,7 @@ AC_PREREQ([2.57])
m4_define([pixman_major], 0)
m4_define([pixman_minor], 20)
m4_define([pixman_micro], 0)
m4_define([pixman_micro], 2)
m4_define([pixman_version],[pixman_major.pixman_minor.pixman_micro])
@ -652,10 +652,9 @@ support_for__thread=no
AC_MSG_CHECKING(for __thread)
AC_LINK_IFELSE([
#ifdef defined __MINGW32__ && !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5))
#if defined(__MINGW32__) && !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5))
#error This MinGW version has broken __thread support
#endif
#endif
#ifdef __OpenBSD__
#error OpenBSD has broken __thread support
#endif

View File

@ -537,13 +537,13 @@ generate_composite_function \
/******************************************************************************/
.macro pixman_composite_add_8888_8888_process_pixblock_tail_head
vld1.8 {d0, d1, d2, d3}, [SRC]!
vld1.32 {d0, d1, d2, d3}, [SRC]!
PF add PF_X, PF_X, #8
PF tst PF_CTL, #0xF
vld1.8 {d4, d5, d6, d7}, [DST_R, :128]!
vld1.32 {d4, d5, d6, d7}, [DST_R, :128]!
PF addne PF_X, PF_X, #8
PF subne PF_CTL, PF_CTL, #1
vst1.8 {d28, d29, d30, d31}, [DST_W, :128]!
vst1.32 {d28, d29, d30, d31}, [DST_W, :128]!
PF cmp PF_X, ORIG_W
PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift]
PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift]

View File

@ -297,6 +297,7 @@ bits_image_fetch_bilinear_no_repeat_8888 (pixman_image_t * ima,
uint32_t *bottom_row;
uint32_t *end;
uint32_t zero[2] = { 0, 0 };
uint32_t one = 1;
int y, y1, y2;
int disty;
int mask_inc;
@ -362,10 +363,8 @@ bits_image_fetch_bilinear_no_repeat_8888 (pixman_image_t * ima,
*/
if (!mask)
{
uint32_t mask_bits = 1;
mask_inc = 0;
mask = &mask_bits;
mask = &one;
}
else
{

View File

@ -958,17 +958,35 @@ set_lum (comp4_t dest[3], comp4_t src[3], comp4_t sa, comp4_t lum)
max = CH_MAX (tmp);
if (min < 0)
{
if (l - min == 0.0)
{
tmp[0] = 0;
tmp[1] = 0;
tmp[2] = 0;
}
else
{
tmp[0] = l + (tmp[0] - l) * l / (l - min);
tmp[1] = l + (tmp[1] - l) * l / (l - min);
tmp[2] = l + (tmp[2] - l) * l / (l - min);
}
}
if (max > a)
{
if (max - l == 0.0)
{
tmp[0] = a;
tmp[1] = a;
tmp[2] = a;
}
else
{
tmp[0] = l + (tmp[0] - l) * (a - l) / (max - l);
tmp[1] = l + (tmp[1] - l) * (a - l) / (max - l);
tmp[2] = l + (tmp[2] - l) * (a - l) / (max - l);
}
}
dest[0] = tmp[0] * MASK + 0.5;
dest[1] = tmp[1] * MASK + 0.5;

View File

@ -245,10 +245,10 @@ scanline_func_name (dst_type_t *dst, \
} \
}
#define FAST_NEAREST_MAINLOOP(scale_func_name, scanline_func, src_type_t, dst_type_t, \
#define FAST_NEAREST_MAINLOOP_INT(scale_func_name, scanline_func, src_type_t, dst_type_t, \
repeat_mode) \
static void \
fast_composite_scaled_nearest_ ## scale_func_name (pixman_implementation_t *imp, \
fast_composite_scaled_nearest ## scale_func_name (pixman_implementation_t *imp, \
pixman_op_t op, \
pixman_image_t * src_image, \
pixman_image_t * mask_image, \
@ -374,12 +374,18 @@ fast_composite_scaled_nearest_ ## scale_func_name (pixman_implementation_t *imp,
} \
}
/* A workaround for old sun studio, see: https://bugs.freedesktop.org/show_bug.cgi?id=32764 */
#define FAST_NEAREST_MAINLOOP(scale_func_name, scanline_func, src_type_t, dst_type_t, \
repeat_mode) \
FAST_NEAREST_MAINLOOP_INT(_ ## scale_func_name, scanline_func, src_type_t, dst_type_t, \
repeat_mode) \
#define FAST_NEAREST(scale_func_name, SRC_FORMAT, DST_FORMAT, \
src_type_t, dst_type_t, OP, repeat_mode) \
FAST_NEAREST_SCANLINE(scaled_nearest_scanline_ ## scale_func_name ## _ ## OP, \
SRC_FORMAT, DST_FORMAT, src_type_t, dst_type_t, \
OP, repeat_mode) \
FAST_NEAREST_MAINLOOP(scale_func_name##_##OP, \
FAST_NEAREST_MAINLOOP_INT(_ ## scale_func_name ## _ ## OP, \
scaled_nearest_scanline_ ## scale_func_name ## _ ## OP, \
src_type_t, dst_type_t, repeat_mode) \
\

View File

@ -56,8 +56,8 @@ general_composite_rect (pixman_implementation_t *imp,
int32_t width,
int32_t height)
{
uint8_t stack_scanline_buffer[SCANLINE_BUFFER_LENGTH * 3];
uint8_t *scanline_buffer = stack_scanline_buffer;
uint64_t stack_scanline_buffer[(SCANLINE_BUFFER_LENGTH * 3 + 7) / 8];
uint8_t *scanline_buffer = (uint8_t *) stack_scanline_buffer;
uint8_t *src_buffer, *mask_buffer, *dest_buffer;
fetch_scanline_t fetch_src = NULL, fetch_mask = NULL, fetch_dest = NULL;
pixman_combine_32_func_t compose;
@ -255,7 +255,7 @@ general_composite_rect (pixman_implementation_t *imp,
}
}
if (scanline_buffer != stack_scanline_buffer)
if (scanline_buffer != (uint8_t *) stack_scanline_buffer)
free (scanline_buffer);
}

View File

@ -430,10 +430,24 @@ compute_image_info (pixman_image_t *image)
flags &= ~FAST_PATH_NARROW_FORMAT;
break;
case LINEAR:
case RADIAL:
code = PIXMAN_unknown;
/*
* As explained in pixman-radial-gradient.c, every point of
* the plane has a valid associated radius (and thus will be
* colored) if and only if a is negative (i.e. one of the two
* circles contains the other one).
*/
if (image->radial.a >= 0)
break;
/* Fall through */
case LINEAR:
code = PIXMAN_unknown;
if (image->common.repeat != PIXMAN_REPEAT_NONE)
{
int i;

View File

@ -1921,8 +1921,8 @@ pixman_fill_mmx (uint32_t *bits,
"movq %7, %4\n"
"movq %7, %5\n"
"movq %7, %6\n"
: "=y" (v1), "=y" (v2), "=y" (v3),
"=y" (v4), "=y" (v5), "=y" (v6), "=y" (v7)
: "=&y" (v1), "=&y" (v2), "=&y" (v3),
"=&y" (v4), "=&y" (v5), "=&y" (v6), "=y" (v7)
: "y" (vfill));
#endif

View File

@ -96,8 +96,24 @@ radial_compute_color (double a,
if (a == 0)
{
return _pixman_gradient_walker_pixel (walker,
pixman_fixed_1 / 2 * c / b);
double t;
if (b == 0)
return 0;
t = pixman_fixed_1 / 2 * c / b;
if (repeat == PIXMAN_REPEAT_NONE)
{
if (0 <= t && t <= pixman_fixed_1)
return _pixman_gradient_walker_pixel (walker, t);
}
else
{
if (t * dr > mindr)
return _pixman_gradient_walker_pixel (walker, t);
}
return 0;
}
det = fdot (b, a, 0, b, -c, 0);