[Pixman] [PATCH] test: Composite with solid images instead of using pixman_image_fill_*

Søren Sandmann sandmann at cs.au.dk
Thu May 24 12:41:45 PDT 2012


There is a couple of places where the test suite uses the
pixman_image_fill_* functions to initialize images. These functions
can fail, and will do so if the "fast" implementation is disabled.

So to make sure the test suite passes even using
PIXMAN_DISABLE="fast", use pixman_image_composite32() with a solid
image instead of pixman_image_fill_*.
---
 test/composite.c          |   19 ++++++++++---------
 test/scaling-crash-test.c |    7 +++++--
 2 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/test/composite.c b/test/composite.c
index 48bde9c..94b4825 100644
--- a/test/composite.c
+++ b/test/composite.c
@@ -525,15 +525,16 @@ composite_test (image_t *dst,
 		int testno)
 {
     pixman_color_t fill;
-    pixman_rectangle16_t rect;
     color_t expected, tdst, tsrc, tmsk;
     pixel_checker_t checker;
+    pixman_image_t *solid;
 
     /* Initialize dst */
     compute_pixman_color (dst->color, &fill);
-    rect.x = rect.y = 0;
-    rect.width = rect.height = dst->size;
-    pixman_image_fill_rectangles (PIXMAN_OP_SRC, dst->image, &fill, 1, &rect);
+    solid = pixman_image_create_solid_fill (&fill);
+    pixman_image_composite32 (PIXMAN_OP_SRC, solid, NULL, dst->image,
+			      0, 0, 0, 0, 0, 0, dst->size, dst->size);
+    pixman_image_unref (solid);
 
     if (mask)
     {
@@ -644,16 +645,16 @@ image_init (image_t *info,
 
     if (info->size)
     {
-	pixman_rectangle16_t rect;
+	pixman_image_t *solid;
 
 	info->image = pixman_image_create_bits (info->format->format,
 						info->size, info->size,
 						NULL, 0);
 
-	rect.x = rect.y = 0;
-	rect.width = rect.height = info->size;
-	pixman_image_fill_rectangles (PIXMAN_OP_SRC, info->image, &fill,
-				      1, &rect);
+	solid = pixman_image_create_solid_fill (&fill);
+	pixman_image_composite32 (PIXMAN_OP_SRC, solid, NULL, info->image,
+				  0, 0, 0, 0, 0, 0, info->size, info->size);
+	pixman_image_unref (solid);
 
 	if (sizes[size] & REPEAT)
 	{
diff --git a/test/scaling-crash-test.c b/test/scaling-crash-test.c
index ed57ae0..0dac892 100644
--- a/test/scaling-crash-test.c
+++ b/test/scaling-crash-test.c
@@ -32,8 +32,8 @@ run_test (int32_t		dst_width,
     pixman_transform_t transform;
     uint32_t *         srcbuf;
     uint32_t *         dstbuf;
-    pixman_box32_t     box = { 0, 0, src_width, src_height };
     pixman_color_t     color_cc = { 0xcccc, 0xcccc, 0xcccc, 0xcccc };
+    pixman_image_t *   solid;
     int result;
     int i;
 
@@ -62,7 +62,10 @@ run_test (int32_t		dst_width,
         PIXMAN_a8r8g8b8, src_width, src_height,
 	srcbuf + (src_width + 10) * 5 + 5, (src_width + 10) * 4);
 
-    pixman_image_fill_boxes (PIXMAN_OP_SRC, src_img, &color_cc, 1, &box);
+    solid = pixman_image_create_solid_fill (&color_cc);
+    pixman_image_composite32 (PIXMAN_OP_SRC, solid, NULL, src_img,
+			      0, 0, 0, 0, 0, 0, src_width, src_height);
+    pixman_image_unref (solid);
 
     dst_img = pixman_image_create_bits (
         PIXMAN_a8r8g8b8, dst_width, dst_height, dstbuf, dst_width * 4);
-- 
1.7.10.1



More information about the Pixman mailing list