summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSøren Sandmann Pedersen <sandmann@redhat.com>2009-11-07 15:28:57 -0500
committerSøren Sandmann Pedersen <sandmann@redhat.com>2010-02-14 11:12:20 -0500
commit488480301c7ca9cb4e41c8d0f489fb56e5d9efdd (patch)
tree60057be30925b1e19c49d006da0d5210504db8e4
parent06ae5ed5971fe616b96bb97a63abf6cc27c5b669 (diff)
Don't call _pixman_implementation_composite() anymore.
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.
-rw-r--r--pixman/pixman.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/pixman/pixman.c b/pixman/pixman.c
index 9ab875d..f70823e 100644
--- a/pixman/pixman.c
+++ b/pixman/pixman.c
@@ -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)