summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2020-02-13 01:53:12 +0100
committerBenjamin Otte <otte@redhat.com>2020-02-13 07:36:38 +0100
commit6203cecf97eb33b7349abc80dc0af50fc4f602dc (patch)
tree3a08ac5797a933156922f286cf8a2d2b44854f60
parent6f9f18009cc20457efd4a266a7de4ce4bc637ad6 (diff)
downloadgtk+-6203cecf97eb33b7349abc80dc0af50fc4f602dc.tar.gz
gsk: Clip shadow node before push_group()
We want to be sure to push a group that's as small as possible, so we clip to the child's bounds, because that's the smallest we can go.
-rw-r--r--gsk/gskrendernodeimpl.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gsk/gskrendernodeimpl.c b/gsk/gskrendernodeimpl.c
index d8bec7047e..aad1fa59ef 100644
--- a/gsk/gskrendernodeimpl.c
+++ b/gsk/gskrendernodeimpl.c
@@ -2899,9 +2899,14 @@ gsk_shadow_node_draw (GskRenderNode *node,
cairo_pattern_t *pattern;
gsize i;
+ cairo_save (cr);
+ /* clip so the push_group() creates a small surface */
+ gsk_cairo_rectangle (cr, &self->child->bounds);
+ cairo_clip (cr);
cairo_push_group (cr);
gsk_render_node_draw (self->child, cr);
pattern = cairo_pop_group (cr);
+ cairo_restore (cr);
for (i = 0; i < self->n_shadows; i++)
{