diff options
author | Emmanuele Bassi <ebassi@gnome.org> | 2016-07-05 17:41:01 +0100 |
---|---|---|
committer | Emmanuele Bassi <ebassi@gnome.org> | 2016-07-05 17:41:01 +0100 |
commit | c4bf786e42360735cb947bf76333df781c8670e7 (patch) | |
tree | e04617076165f134e7f007ffe34e41e77b220454 /gtk/gtkwidget.c | |
parent | 4470d7d26949c96599a998b86ba92f07022524d4 (diff) | |
download | gtk+-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.c | 4 |
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); |