summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSøren Sandmann Pedersen <ssp@redhat.com>2012-10-06 19:50:35 -0400
committerSøren Sandmann Pedersen <ssp@redhat.com>2013-05-27 09:19:21 -0400
commit3f7069c6e1cd65b7a0cf99cb11732ef3325b045b (patch)
tree8369d71401feeaafc84de24a59bb18ceba600395
parenta6ba2838676ca77d54426bdbb4406e0cef9bc270 (diff)
Pass clip on to state_apply
-rw-r--r--src/fragment.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/fragment.c b/src/fragment.c
index 7307766b..99cdb3e1 100644
--- a/src/fragment.c
+++ b/src/fragment.c
@@ -411,7 +411,7 @@ static const pixman_color_t white =
};
static void
-state_apply (state_t *state, pixman_image_t *image)
+state_apply (state_t *state, pixman_image_t *image, pixman_region32_t *clip)
{
int width = pixman_image_get_width (image);
int height = pixman_image_get_height (image);
@@ -479,13 +479,15 @@ state_apply (state_t *state, pixman_image_t *image)
if (!temp)
break; /* FIXME: status */
+
+ pixman_image_set_clip_region32 (temp, clip);
- state_apply (state->composite.dest, image);
+ state_apply (state->composite.dest, image, clip);
/* FIXME: check if source can be expressed as
- * (s IN m), (s IN glyphs), (s IN traps)
+ * (s IN m), (s IN glyphs), (s IN traps) or just s
*/
- state_apply (state->composite.source, temp);
+ state_apply (state->composite.source, temp, clip);
pixman_image_composite32 (
state->composite.op, temp, NULL, image,
@@ -569,7 +571,7 @@ fragment_apply (fragment_t *fragment, pixman_image_t *image)
pixman_image_set_clip_region32 (image, &fragment->region);
- state_apply (fragment->state, image);
+ state_apply (fragment->state, image, &fragment->region);
pixman_image_set_clip_region32 (image, NULL);