summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2023-03-13 08:58:58 +0000
committerMatthias Clasen <mclasen@redhat.com>2023-03-13 08:58:58 +0000
commit413abef01d6d50e3b0e4b35262603cea2d9d5a34 (patch)
treec6c0748cf2c53c8514b1168522c20713c0f04d7f
parent4f8743a5374147fc9f372126d81f27c094b3c1a4 (diff)
parente24d4ba5db5f5515ecdf45bce41736fbf9919ce4 (diff)
downloadgtk+-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.c10
-rw-r--r--gtk/gtksnapshot.c7
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);
}