summaryrefslogtreecommitdiff
path: root/perf/main.c
diff options
context:
space:
mode:
authorFederico Mena Quintero <federico@ximian.com>2005-07-29 00:38:51 +0000
committerFederico Mena Quintero <federico@src.gnome.org>2005-07-29 00:38:51 +0000
commitb4f52020f0fd86ddda88cdded1e4e84b47f384b6 (patch)
tree1b22478a6f40c3351474d546fb617f72b81418ec /perf/main.c
parent375cb32bc107b1e69be49689fd096b1c961d94af (diff)
downloadgtk+-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.c36
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;
}