summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimm Bäder <mail@baedert.org>2020-02-12 16:21:38 +0100
committerTimm Bäder <mail@baedert.org>2020-02-12 16:54:46 +0100
commitb12a6be9d9199da95d7626e4b0185de2cb01a331 (patch)
treefa1c69e623ac66b850aee396b3d572eb3d4ba950
parentd702c159d57ea465798ac4a05e26f25145dc6612 (diff)
downloadgtk+-b12a6be9d9199da95d7626e4b0185de2cb01a331.tar.gz
rendernode: draw() only in node bounds
We currently disable when draw()ing nodes using the cairo fallback path, which means we can't just use cairo_paint(). Use a proper rectangle instead. Fixes #2431
-rw-r--r--gsk/gskrendernodeimpl.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/gsk/gskrendernodeimpl.c b/gsk/gskrendernodeimpl.c
index 2434c5d40e..a6957ff657 100644
--- a/gsk/gskrendernodeimpl.c
+++ b/gsk/gskrendernodeimpl.c
@@ -651,7 +651,10 @@ gsk_texture_node_draw (GskRenderNode *node,
pattern = cairo_pattern_create_for_surface (surface);
cairo_pattern_set_extend (pattern, CAIRO_EXTEND_PAD);
cairo_set_source (cr, pattern);
- cairo_paint (cr);
+ cairo_rectangle (cr,
+ 0, 0,
+ gdk_texture_get_width (self->texture), gdk_texture_get_height (self->texture));
+ cairo_fill (cr);
cairo_restore (cr);
@@ -2549,7 +2552,10 @@ gsk_repeat_node_draw (GskRenderNode *node,
});
cairo_set_source (cr, pattern);
- cairo_paint (cr);
+ cairo_rectangle (cr,
+ node->bounds.origin.x, node->bounds.origin.y,
+ node->bounds.size.width, node->bounds.size.height);
+ cairo_fill (cr);
cairo_pattern_destroy (pattern);
cairo_surface_destroy (surface);
@@ -3821,7 +3827,10 @@ gsk_blur_node_draw (GskRenderNode *node,
cairo_surface_unmap_image (surface, image_surface);
cairo_set_source (cr, pattern);
- cairo_paint (cr);
+ cairo_rectangle (cr,
+ node->bounds.origin.x, node->bounds.origin.y,
+ node->bounds.size.width, node->bounds.size.height);
+ cairo_fill (cr);
cairo_restore (cr);
cairo_pattern_destroy (pattern);