From: Benjamin Otte Date: Sun, 21 May 2023 03:03:49 +0000 (+0200) Subject: rendernode: Use cairo_set_device_offset() X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~1^2~183^2~3 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=c322ab34c701ca3f3b3939458c8fe873ba5d6a10;p=gtk4.git rendernode: Use cairo_set_device_offset() Simplifies the code. --- diff --git a/gsk/gskrendernodeimpl.c b/gsk/gskrendernodeimpl.c index c60bd5b00f..9a17de149a 100644 --- a/gsk/gskrendernodeimpl.c +++ b/gsk/gskrendernodeimpl.c @@ -3956,27 +3956,23 @@ gsk_repeat_node_draw (GskRenderNode *node, cairo_pattern_t *pattern; cairo_surface_t *surface; cairo_t *surface_cr; + double scale_x, scale_y; surface = cairo_surface_create_similar (cairo_get_target (cr), CAIRO_CONTENT_COLOR_ALPHA, ceilf (self->child_bounds.size.width), ceilf (self->child_bounds.size.height)); + cairo_surface_get_device_scale (surface, &scale_x, &scale_y); + cairo_surface_set_device_offset (surface, + - self->child_bounds.origin.x * scale_x, + - self->child_bounds.origin.y * scale_y); + surface_cr = cairo_create (surface); - cairo_translate (surface_cr, - - self->child_bounds.origin.x, - - self->child_bounds.origin.y); gsk_render_node_draw (self->child, surface_cr); cairo_destroy (surface_cr); pattern = cairo_pattern_create_for_surface (surface); cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT); - cairo_pattern_set_matrix (pattern, - &(cairo_matrix_t) { - .xx = 1.0, - .yy = 1.0, - .x0 = - self->child_bounds.origin.x, - .y0 = - self->child_bounds.origin.y - }); cairo_set_source (cr, pattern); cairo_pattern_destroy (pattern); cairo_surface_destroy (surface);