summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorBenjamin Otte <otte.benjamin@googlemail.com>2023-05-06 00:59:25 +0000
committerBenjamin Otte <otte.benjamin@googlemail.com>2023-05-06 00:59:25 +0000
commit2a950dec71ce9b572ef6666430536ec3931b0188 (patch)
tree44758c2cef496d33faf532ed0e4ebfc6fdbb7e94 /gtk
parentd6c80d4f35aa73624028d4e4af95d61e856901c1 (diff)
parent97aff588d553b147220a1af8eb0d5fad08fefcf3 (diff)
downloadgtk+-2a950dec71ce9b572ef6666430536ec3931b0188.tar.gz
Merge branch 'wip/otte/update-texture' into 'main'
Add texture update regions See merge request GNOME/gtk!5880
Diffstat (limited to 'gtk')
-rw-r--r--gtk/gtkglarea.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/gtk/gtkglarea.c b/gtk/gtkglarea.c
index f547a4995f..1e2f6b5535 100644
--- a/gtk/gtkglarea.c
+++ b/gtk/gtkglarea.c
@@ -770,6 +770,20 @@ gtk_gl_area_snapshot (GtkWidget *widget,
texture = priv->texture;
priv->texture = NULL;
+
+ if (priv->textures)
+ gdk_gl_texture_builder_set_update_texture (texture->builder, ((Texture *) priv->textures->data)->holder);
+ {
+ cairo_region_t *region = cairo_region_create ();
+ cairo_region_union_rectangle (region, &(cairo_rectangle_int_t) { 0, 0, 300, 300 });
+ cairo_region_union_rectangle (region, &(cairo_rectangle_int_t) { 0, 600, 300, 300 });
+ cairo_region_union_rectangle (region, &(cairo_rectangle_int_t) { 300, 300, 300, 300 });
+ cairo_region_union_rectangle (region, &(cairo_rectangle_int_t) { 600, 0, 300, 300 });
+ cairo_region_union_rectangle (region, &(cairo_rectangle_int_t) { 600, 600, 300, 300 });
+ gdk_gl_texture_builder_set_update_region (texture->builder, region);
+ cairo_region_destroy (region);
+ }
+
priv->textures = g_list_prepend (priv->textures, texture);
if (gdk_gl_context_has_sync (priv->context))
@@ -781,6 +795,7 @@ gtk_gl_area_snapshot (GtkWidget *widget,
release_texture,
texture);
+ gdk_gl_texture_builder_set_update_texture (texture->builder, NULL);
/* Our texture is rendered by OpenGL, so it is upside down,
* compared to what GSK expects, so flip it back.
*/