diff options
author | Timm Bäder <mail@baedert.org> | 2020-02-12 16:21:38 +0100 |
---|---|---|
committer | Timm Bäder <mail@baedert.org> | 2020-02-12 16:54:46 +0100 |
commit | b12a6be9d9199da95d7626e4b0185de2cb01a331 (patch) | |
tree | fa1c69e623ac66b850aee396b3d572eb3d4ba950 | |
parent | d702c159d57ea465798ac4a05e26f25145dc6612 (diff) | |
download | gtk+-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.c | 15 |
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); |