diff options
-rw-r--r-- | pixman/pixman-trap.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/pixman/pixman-trap.c b/pixman/pixman-trap.c index c99f03ec..1ed75b82 100644 --- a/pixman/pixman-trap.c +++ b/pixman/pixman-trap.c @@ -314,6 +314,33 @@ dump_image (pixman_image_t *image, } #endif +void __attribute__((__noinline__)) +print_trap (const pixman_trapezoid_t *trap) +{ + fprintf (stderr, " top: %x\n", trap->top); + fprintf (stderr, " bottom: %x\n", trap->bottom); + fprintf (stderr, " left.p1: %x, %x\n", trap->left.p1.x, trap->left.p1.y); + fprintf (stderr, " left.p2: %x, %x\n", trap->left.p2.x, trap->left.p2.y); + fprintf (stderr, " right.p1: %x, %x\n", trap->right.p1.x, trap->right.p1.y); + fprintf (stderr, " right.p2: %x, %x\n", trap->right.p2.x, trap->right.p2.y); +} + +static void +check_trapezoids (const pixman_trapezoid_t *traps, int n_traps) +{ + int i; + + for (i = 0; i < n_traps; ++i) + { + const pixman_trapezoid_t *trap = &(traps[i]); + if (!(pixman_trapezoid_valid (trap))) + { + fprintf (stderr, "Invalid trapezoid detected\n"); + print_trap (trap); + } + } +} + PIXMAN_EXPORT void pixman_add_trapezoids (pixman_image_t * image, int16_t x_off, @@ -323,6 +350,7 @@ pixman_add_trapezoids (pixman_image_t * image, { int i; + check_trapezoids (traps, ntraps); #if 0 dump_image (image, "before"); #endif @@ -357,6 +385,8 @@ pixman_rasterize_trapezoid (pixman_image_t * image, return_if_fail (image->type == BITS); + check_trapezoids (trap, 1); + _pixman_image_validate (image); if (!pixman_trapezoid_valid (trap)) @@ -417,6 +447,8 @@ pixman_composite_trapezoids (pixman_op_t op, if (n_traps <= 0) return; + check_trapezoids (traps, n_traps); + _pixman_image_validate (src); _pixman_image_validate (dst); |