pixman_composite_func_t func = NULL;
pixman_bool_t src_repeat = src->common.repeat == PIXMAN_REPEAT_NORMAL;
pixman_bool_t mask_repeat = mask && mask->common.repeat == PIXMAN_REPEAT_NORMAL;
- pixman_region32_t region;
pixman_bool_t result;
- pixman_box32_t extents;
-
- pixman_region32_init (®ion);
-
- if (!pixman_compute_composite_region32 (
- ®ion, src, mask, dest, src_x, src_y, mask_x, mask_y, dest_x, dest_y, width, height))
- {
- result = TRUE;
-
- goto out;
- }
if ((src->type == BITS || pixman_image_can_get_solid (src)) &&
(!mask || mask->type == BITS)
const FastPathInfo *info;
pixman_bool_t pixbuf;
- extents = *pixman_region32_extents (®ion);
-
- if (!image_covers (src, &extents) ||
- (mask && !image_covers (mask, &extents)))
- {
- result = FALSE;
-
- goto out;
- }
-
pixbuf =
src && src->type == BITS &&
mask && mask->type == BITS &&
}
}
+ result = FALSE;
+
if (func)
{
- walk_region_internal (imp, op,
- src, mask, dest,
- src_x, src_y, mask_x, mask_y,
- dest_x, dest_y,
- width, height,
- src_repeat, mask_repeat,
- ®ion,
- func);
+ pixman_region32_t region;
+ pixman_region32_init (®ion);
+
+ if (pixman_compute_composite_region32 (
+ ®ion, src, mask, dest, src_x, src_y, mask_x, mask_y, dest_x, dest_y, width, height))
+ {
+ pixman_box32_t *extents = pixman_region32_extents (®ion);
- result = TRUE;
- }
- else
- {
- result = FALSE;
+ if (image_covers (src, extents) &&
+ (!mask || image_covers (mask, extents)))
+ {
+ walk_region_internal (imp, op,
+ src, mask, dest,
+ src_x, src_y, mask_x, mask_y,
+ dest_x, dest_y,
+ width, height,
+ src_repeat, mask_repeat,
+ ®ion,
+ func);
+
+ result = TRUE;
+ }
+ }
+
+ pixman_region32_fini (®ion);
}
-out:
- pixman_region32_fini (®ion);
return result;
}