Compare commits

...

1 Commits

Author SHA1 Message Date
Alexander Larsson
e380e8c2cc DO NOT MERGE - test code
This adds some spew for snapshot and render time, and
adds tweaks for testing:
  GSK_NO_RENDER setenv to completely skip the render phase (for profiling)
  GSK_NO_LAYOUT setenv to disable pango layout nodes

Also, disable some widget from rendering to avoid fallback:
  entry
  textview
2017-01-11 12:47:32 +01:00
4 changed files with 58 additions and 1 deletions

View File

@@ -3592,6 +3592,8 @@ gtk_entry_render (GtkCssGadget *gadget,
cairo_t *cr;
int i;
return FALSE;
widget = gtk_css_gadget_get_owner (gadget);
entry = GTK_ENTRY (widget);
priv = entry->priv;

View File

@@ -1137,6 +1137,19 @@ gtk_snapshot_render_layout (GtkSnapshot *snapshot,
GtkCssValue *shadow;
cairo_t *cr;
{
static int no_layout = 0;
if (no_layout == 0)
{
if (g_getenv ("GSK_NO_LAYOUT") != NULL)
no_layout = 2;
else
no_layout = 1;
}
if (no_layout == 2)
return;
}
g_return_if_fail (snapshot != NULL);
g_return_if_fail (GTK_IS_STYLE_CONTEXT (context));
g_return_if_fail (PANGO_IS_LAYOUT (layout));

View File

@@ -428,6 +428,8 @@ static gint gtk_text_view_motion_event (GtkWidget *widget,
GdkEventMotion *event);
static gint gtk_text_view_draw (GtkWidget *widget,
cairo_t *cr);
static void gtk_text_view_snapshot (GtkWidget *widget,
GtkSnapshot *snapshot);
static gboolean gtk_text_view_focus (GtkWidget *widget,
GtkDirectionType direction);
static void gtk_text_view_select_all (GtkWidget *widget,
@@ -737,6 +739,7 @@ gtk_text_view_class_init (GtkTextViewClass *klass)
gobject_class->get_property = gtk_text_view_get_property;
gobject_class->finalize = gtk_text_view_finalize;
widget_class->snapshot = gtk_text_view_snapshot;
widget_class->destroy = gtk_text_view_destroy;
widget_class->realize = gtk_text_view_realize;
widget_class->unrealize = gtk_text_view_unrealize;
@@ -5901,6 +5904,12 @@ paint_border_window (GtkTextView *text_view,
gtk_style_context_restore (context);
}
static void
gtk_text_view_snapshot (GtkWidget *widget,
GtkSnapshot *snapshot)
{
}
static gboolean
gtk_text_view_draw (GtkWidget *widget,
cairo_t *cr)

View File

@@ -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);
}