summaryrefslogtreecommitdiff
path: root/gtk/gtkwidget.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/gtkwidget.c')
-rw-r--r--gtk/gtkwidget.c35
1 files changed, 34 insertions, 1 deletions
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 14b2d6d7e1..07935df8c2 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -15690,8 +15690,23 @@ gtk_widget_render (GtkWidget *widget,
clip,
"Render<%s>", G_OBJECT_TYPE_NAME (widget));
cairo_region_destroy (clip);
+ gint64 start_snapshot = g_get_monotonic_time ();
gtk_widget_snapshot (widget, &snapshot);
root = gtk_snapshot_finish (&snapshot);
+ gint64 end_snapshot = g_get_monotonic_time ();
+ {
+ gint64 delta = end_snapshot - start_snapshot;
+ static gint64 min_delta = G_MAXINT64;
+ static gint64 max_delta = 0;
+ static gint64 n_delta = 0;
+ static gint64 total_delta = 0;
+ min_delta = MIN (min_delta, delta);
+ max_delta = MAX (max_delta, delta);
+ n_delta++;
+ total_delta += delta;
+ g_print ("Snapshot took %.1fms (min: %.1f, max: %.1f, avg: %.1f)\n",
+ delta / 1000.0, min_delta / 1000.0, max_delta / 1000.0, total_delta / (1000.0 * n_delta));
+ }
if (root != NULL)
{
gtk_inspector_record_render (widget,
@@ -15700,8 +15715,26 @@ gtk_widget_render (GtkWidget *widget,
region,
context,
root);
+ if (g_getenv ("GSK_NO_RENDER") == NULL)
+ {
+ gint64 start_render = g_get_monotonic_time ();
+ gsk_renderer_render (renderer, root, context);
+ gint64 end_render = g_get_monotonic_time ();
+ {
+ gint64 delta = end_render - start_render;
+ static gint64 min_delta = G_MAXINT64;
+ static gint64 max_delta = 0;
+ static gint64 n_delta = 0;
+ static gint64 total_delta = 0;
+ min_delta = MIN (min_delta, delta);
+ max_delta = MAX (max_delta, delta);
+ n_delta++;
+ total_delta += delta;
+ g_print ("Render took %.1fms (min: %.1f, max: %.1f, avg: %.1f)\n",
+ delta / 1000.0, min_delta / 1000.0, max_delta / 1000.0, total_delta / (1000.0 * n_delta));
+ }
+ }
- gsk_renderer_render (renderer, root, context);
gsk_render_node_unref (root);
}