summaryrefslogtreecommitdiff
path: root/gtk/gtkwidget.c
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@gnome.org>2016-07-05 17:41:01 +0100
committerEmmanuele Bassi <ebassi@gnome.org>2016-07-05 17:41:01 +0100
commitc4bf786e42360735cb947bf76333df781c8670e7 (patch)
treee04617076165f134e7f007ffe34e41e77b220454 /gtk/gtkwidget.c
parent4470d7d26949c96599a998b86ba92f07022524d4 (diff)
downloadgtk+-wip/ebassi/gsk-render-node-pool.tar.gz
gsk: Use GskRenderer to create render nodeswip/ebassi/gsk-render-node-pool
Instead of letting users create their own GskRenderNode instances we should cache render nodes inside GskRenderer. As rendering may end up resulting in thousands or more render nodes per frame, the memory pressure on the slice allocator may end up degrading our performance. By having render nodes cached and handed out from a pool we can recycle instances at every frame.
Diffstat (limited to 'gtk/gtkwidget.c')
-rw-r--r--gtk/gtkwidget.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 90e0f2616e..fd3c728718 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -17479,7 +17479,7 @@ gtk_widget_get_render_node (GtkWidget *widget,
GskRenderNode *tmp;
cairo_t *cr;
- tmp = gsk_render_node_new ();
+ tmp = gsk_renderer_create_render_node (renderer);
gsk_render_node_set_bounds (tmp, &bounds);
gsk_render_node_set_transform (tmp, &m);
cr = gsk_render_node_get_draw_context (tmp);
@@ -17501,7 +17501,7 @@ gtk_widget_get_render_node (GtkWidget *widget,
gboolean result;
cairo_t *cr;
- tmp = gsk_render_node_new ();
+ tmp = gsk_renderer_create_render_node (renderer);
gsk_render_node_set_bounds (tmp, &bounds);
gsk_render_node_set_transform (tmp, &m);
cr = gsk_render_node_get_draw_context (tmp);