diff options
author | Matthias Clasen <mclasen@redhat.com> | 2023-03-13 08:58:58 +0000 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2023-03-13 08:58:58 +0000 |
commit | 413abef01d6d50e3b0e4b35262603cea2d9d5a34 (patch) | |
tree | c6c0748cf2c53c8514b1168522c20713c0f04d7f | |
parent | 4f8743a5374147fc9f372126d81f27c094b3c1a4 (diff) | |
parent | e24d4ba5db5f5515ecdf45bce41736fbf9919ce4 (diff) | |
download | gtk+-413abef01d6d50e3b0e4b35262603cea2d9d5a34.tar.gz |
Merge branch 'more-scaled-texture-fixes' into 'main'
Fix gtk_snapshot_append_scaled_texture
See merge request GNOME/gtk!5638
-rw-r--r-- | demos/gtk-demo/demo3widget.c | 10 | ||||
-rw-r--r-- | gtk/gtksnapshot.c | 7 |
2 files changed, 6 insertions, 11 deletions
diff --git a/demos/gtk-demo/demo3widget.c b/demos/gtk-demo/demo3widget.c index 95a1479e8f..9cab3bc2ae 100644 --- a/demos/gtk-demo/demo3widget.c +++ b/demos/gtk-demo/demo3widget.c @@ -56,7 +56,6 @@ demo3_widget_snapshot (GtkWidget *widget, Demo3Widget *self = DEMO3_WIDGET (widget); int x, y, width, height; double w, h, w2, h2; - GskRenderNode *node; width = gtk_widget_get_width (widget); height = gtk_widget_get_height (widget); @@ -81,11 +80,10 @@ demo3_widget_snapshot (GtkWidget *widget, gtk_snapshot_translate (snapshot, &GRAPHENE_POINT_INIT (w2 / 2, h2 / 2)); gtk_snapshot_rotate (snapshot, self->angle); gtk_snapshot_translate (snapshot, &GRAPHENE_POINT_INIT (- w / 2, - h / 2)); - node = gsk_texture_scale_node_new (self->texture, - &GRAPHENE_RECT_INIT (0, 0, w, h), - self->filter); - gtk_snapshot_append_node (snapshot, node); - gsk_render_node_unref (node); + gtk_snapshot_append_scaled_texture (snapshot, + self->texture, + self->filter, + &GRAPHENE_RECT_INIT (0, 0, w, h)); gtk_snapshot_restore (snapshot); gtk_snapshot_pop (snapshot); } diff --git a/gtk/gtksnapshot.c b/gtk/gtksnapshot.c index bca57eaab2..76005769d8 100644 --- a/gtk/gtksnapshot.c +++ b/gtk/gtksnapshot.c @@ -2054,16 +2054,13 @@ gtk_snapshot_append_scaled_texture (GtkSnapshot *snapshot, const graphene_rect_t *bounds) { GskRenderNode *node; - graphene_rect_t real_bounds; - float scale_x, scale_y, dx, dy; g_return_if_fail (snapshot != NULL); g_return_if_fail (GDK_IS_TEXTURE (texture)); g_return_if_fail (bounds != NULL); - gtk_snapshot_ensure_affine (snapshot, &scale_x, &scale_y, &dx, &dy); - gtk_graphene_rect_scale_affine (bounds, scale_x, scale_y, dx, dy, &real_bounds); - node = gsk_texture_scale_node_new (texture, &real_bounds, filter); + gtk_snapshot_ensure_identity (snapshot); + node = gsk_texture_scale_node_new (texture, bounds, filter); gtk_snapshot_append_node_internal (snapshot, node); } |