Don't call _pixman_implementation_composite() anymore.
authorSøren Sandmann Pedersen <sandmann@redhat.com>
Sat, 7 Nov 2009 20:28:57 +0000 (15:28 -0500)
committerSøren Sandmann Pedersen <sandmann@redhat.com>
Sun, 14 Feb 2010 16:12:20 +0000 (11:12 -0500)
Instead just call _pixman_run_fast_path(). Since we view
general_composite() as a fast path now, we know that it will find
*some* compositing routine.

pixman/pixman.c

index 9ab875d..f70823e 100644 (file)
@@ -192,6 +192,7 @@ pixman_image_composite32 (pixman_op_t      op,
     int mask_dx, mask_dy;
     uint32_t *dest_bits;
     int dest_dx, dest_dy;
+    pixman_implementation_t *i;
 
     _pixman_image_validate (src);
     if (mask)
@@ -221,13 +222,19 @@ pixman_image_composite32 (pixman_op_t      op,
     if (dest->common.need_workaround)
        apply_workaround (dest, &dest_x, &dest_y, &dest_bits, &dest_dx, &dest_dy);
 
-    _pixman_implementation_composite (imp, op,
-                                      src, mask, dest,
-                                      src_x, src_y,
-                                      mask_x, mask_y,
-                                      dest_x, dest_y,
-                                      width, height);
-
+    for (i = imp; i != NULL; i = i->delegate)
+    {
+       if (_pixman_run_fast_path (i->fast_paths, imp,
+                                  op, src, mask, dest,
+                                  src_x, src_y,
+                                  mask_x, mask_y,
+                                  dest_x, dest_y,
+                                  width, height))
+       {
+           break;
+       }
+    }
+               
     if (src->common.need_workaround)
        unapply_workaround (src, src_bits, src_dx, src_dy);
     if (mask && mask->common.need_workaround)