|
Packit Service |
fb6fa5 |
#include <stdio.h>
|
|
Packit Service |
fb6fa5 |
#include <gtk/gtk.h>
|
|
Packit Service |
fb6fa5 |
#include "gtkwidgetprofiler.h"
|
|
Packit Service |
fb6fa5 |
#include "widgets.h"
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
#define ITERS 100000
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
static GtkWidget *
|
|
Packit Service |
fb6fa5 |
create_widget_cb (GtkWidgetProfiler *profiler, gpointer data)
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
return appwindow_new ();
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
static void
|
|
Packit Service |
fb6fa5 |
report_cb (GtkWidgetProfiler *profiler, GtkWidgetProfilerReport report, GtkWidget *widget, gdouble elapsed, gpointer data)
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
const char *type;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
switch (report) {
|
|
Packit Service |
fb6fa5 |
case GTK_WIDGET_PROFILER_REPORT_CREATE:
|
|
Packit Service |
fb6fa5 |
type = "widget creation";
|
|
Packit Service |
fb6fa5 |
break;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
case GTK_WIDGET_PROFILER_REPORT_MAP:
|
|
Packit Service |
fb6fa5 |
type = "widget map";
|
|
Packit Service |
fb6fa5 |
break;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
case GTK_WIDGET_PROFILER_REPORT_EXPOSE:
|
|
Packit Service |
fb6fa5 |
type = "widget expose";
|
|
Packit Service |
fb6fa5 |
break;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
case GTK_WIDGET_PROFILER_REPORT_DESTROY:
|
|
Packit Service |
fb6fa5 |
type = "widget destruction";
|
|
Packit Service |
fb6fa5 |
break;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
default:
|
|
Packit Service |
fb6fa5 |
g_assert_not_reached ();
|
|
Packit Service |
fb6fa5 |
type = NULL;
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
fprintf (stdout, "%s: %g sec\n", type, elapsed);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
if (report == GTK_WIDGET_PROFILER_REPORT_DESTROY)
|
|
Packit Service |
fb6fa5 |
fputs ("\n", stdout);
|
|
Packit Service |
fb6fa5 |
}
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
int
|
|
Packit Service |
fb6fa5 |
main (int argc, char **argv)
|
|
Packit Service |
fb6fa5 |
{
|
|
Packit Service |
fb6fa5 |
GtkWidgetProfiler *profiler;
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
gtk_init (&argc, &argv);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
profiler = gtk_widget_profiler_new ();
|
|
Packit Service |
fb6fa5 |
g_signal_connect (profiler, "create-widget",
|
|
Packit Service |
fb6fa5 |
G_CALLBACK (create_widget_cb), NULL);
|
|
Packit Service |
fb6fa5 |
g_signal_connect (profiler, "report",
|
|
Packit Service |
fb6fa5 |
G_CALLBACK (report_cb), NULL);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
gtk_widget_profiler_set_num_iterations (profiler, ITERS);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
/* gtk_widget_profiler_profile_boot (profiler); */
|
|
Packit Service |
fb6fa5 |
gtk_widget_profiler_profile_expose (profiler);
|
|
Packit Service |
fb6fa5 |
|
|
Packit Service |
fb6fa5 |
return 0;
|
|
Packit Service |
fb6fa5 |
}
|