]> Pileus Git - ~andy/gtk/blob - perf/main.c
stylecontext: Do invalidation on first resize container
[~andy/gtk] / perf / main.c
1 #include <stdio.h>
2 #include <gtk/gtk.h>
3 #include "gtkwidgetprofiler.h"
4 #include "widgets.h"
5
6 #define ITERS 100000
7
8 static GtkWidget *
9 create_widget_cb (GtkWidgetProfiler *profiler, gpointer data)
10 {
11   return appwindow_new ();
12 }
13
14 static void
15 report_cb (GtkWidgetProfiler *profiler, GtkWidgetProfilerReport report, GtkWidget *widget, gdouble elapsed, gpointer data)
16 {
17   const char *type;
18
19   switch (report) {
20   case GTK_WIDGET_PROFILER_REPORT_CREATE:
21     type = "widget creation";
22     break;
23
24   case GTK_WIDGET_PROFILER_REPORT_MAP:
25     type = "widget map";
26     break;
27
28   case GTK_WIDGET_PROFILER_REPORT_EXPOSE:
29     type = "widget expose";
30     break;
31
32   case GTK_WIDGET_PROFILER_REPORT_DESTROY:
33     type = "widget destruction";
34     break;
35
36   default:
37     g_assert_not_reached ();
38     type = NULL;
39   }
40
41   fprintf (stdout, "%s: %g sec\n", type, elapsed);
42
43   if (report == GTK_WIDGET_PROFILER_REPORT_DESTROY)
44     fputs ("\n", stdout);
45 }
46
47 int
48 main (int argc, char **argv)
49 {
50   GtkWidgetProfiler *profiler;
51
52   gtk_init (&argc, &argv);
53
54   profiler = gtk_widget_profiler_new ();
55   g_signal_connect (profiler, "create-widget",
56                     G_CALLBACK (create_widget_cb), NULL);
57   g_signal_connect (profiler, "report",
58                     G_CALLBACK (report_cb), NULL);
59
60   gtk_widget_profiler_set_num_iterations (profiler, ITERS);
61
62 /*   gtk_widget_profiler_profile_boot (profiler); */
63   gtk_widget_profiler_profile_expose (profiler);
64   
65   return 0;
66 }