diff options
author | Federico Mena Quintero <federico@ximian.com> | 2005-07-29 00:38:51 +0000 |
---|---|---|
committer | Federico Mena Quintero <federico@src.gnome.org> | 2005-07-29 00:38:51 +0000 |
commit | b4f52020f0fd86ddda88cdded1e4e84b47f384b6 (patch) | |
tree | 1b22478a6f40c3351474d546fb617f72b81418ec /perf/main.c | |
parent | 375cb32bc107b1e69be49689fd096b1c961d94af (diff) | |
download | gtk+-b4f52020f0fd86ddda88cdded1e4e84b47f384b6.tar.gz |
Update for the new API of the profiler.
2005-07-28 Federico Mena Quintero <federico@ximian.com>
* perf/README: Update for the new API of the profiler.
* perf/gtkwidgetprofiler.[ch]: New files with a widget profiler
object. This is the old content of timers.[ch] turned into a nice
object, with signals for creation and reporting. The profiler
needs to maintain some state when reusing the widget, so it's
useful to turn it into a real object.
Break down timing show_all into GTK_WIDGET_PROFILER_REPORT_MAP and
GTK_WIDGET_PROFILER_REPORT_EXPOSE.
* perf/main.c: Refactor to use GtkWidgetProfiler.
* perf/appwindow.c (content_area_new): Make this just create a
notebook, instead of a complex arrangement of panes.
* perf/widgets.h: New header file for all the "create a widget"
utility functions.
* perf/treeview.c: New file. Moved the tree view part from
appwindow.c over to here; GtkTreeView really needs its own tests.
(tree_view_new): Set the shadow type to IN.
* perf/textview.c: Likewise moved over from appwindow.c, but for
GtkTextView.
(text_view_new): Set the shadow type to IN.
* perf/Makefile.am (testperf_SOURCES): Add the new source files;
remove appwindow.h and timers.[ch].
* perf/timers.[ch]: Removed.
* perf/appwindow.h: Removed.
Diffstat (limited to 'perf/main.c')
-rw-r--r-- | perf/main.c | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/perf/main.c b/perf/main.c index cbd8ded174..303775249d 100644 --- a/perf/main.c +++ b/perf/main.c @@ -1,31 +1,35 @@ #include <stdio.h> #include <gtk/gtk.h> -#include "appwindow.h" -#include "timers.h" +#include "gtkwidgetprofiler.h" +#include "widgets.h" -#define ITERS 20 +#define ITERS 10 static GtkWidget * -create_cb (gpointer data) +create_widget_cb (GtkWidgetProfiler *profiler, gpointer data) { return appwindow_new (); } static void -report_cb (TimerReport report, gdouble elapsed, gpointer data) +report_cb (GtkWidgetProfiler *profiler, GtkWidgetProfilerReport report, GtkWidget *widget, gdouble elapsed, gpointer data) { const char *type; switch (report) { - case TIMER_REPORT_WIDGET_CREATION: + case GTK_WIDGET_PROFILER_REPORT_CREATE: type = "widget creation"; break; - case TIMER_REPORT_WIDGET_SHOW: - type = "widget show"; + case GTK_WIDGET_PROFILER_REPORT_MAP: + type = "widget map"; break; - case TIMER_REPORT_WIDGET_DESTRUCTION: + case GTK_WIDGET_PROFILER_REPORT_EXPOSE: + type = "widget expose"; + break; + + case GTK_WIDGET_PROFILER_REPORT_DESTROY: type = "widget destruction"; break; @@ -36,19 +40,25 @@ report_cb (TimerReport report, gdouble elapsed, gpointer data) fprintf (stderr, "%s: %g sec\n", type, elapsed); - if (report == TIMER_REPORT_WIDGET_DESTRUCTION) + if (report == GTK_WIDGET_PROFILER_REPORT_DESTROY) fputs ("\n", stderr); } int main (int argc, char **argv) { - int i; + GtkWidgetProfiler *profiler; gtk_init (&argc, &argv); - for (i = 0; i < ITERS; i++) - timer_time_widget (create_cb, report_cb, NULL); + profiler = gtk_widget_profiler_new (); + g_signal_connect (profiler, "create-widget", + G_CALLBACK (create_widget_cb), NULL); + g_signal_connect (profiler, "report", + G_CALLBACK (report_cb), NULL); + + gtk_widget_profiler_set_num_iterations (profiler, ITERS); + gtk_widget_profiler_profile_boot (profiler); return 0; } |