]> Pileus Git - ~andy/gtk/blobdiff - perf/gtkwidgetprofiler.c
Use AM_CPPFLAGS instead the obsolete INCLUDES
[~andy/gtk] / perf / gtkwidgetprofiler.c
index 4b33d09ae46df1f666917aca89bd785d25a7476c..afbc53dd22e6c99d6018accc819b70ec9b3bc080 100644 (file)
@@ -20,7 +20,7 @@ struct _GtkWidgetProfilerPrivate {
 
   GTimer *timer;
 
-  gulong toplevel_expose_event_id;
+  gulong toplevel_draw_id;
   gulong toplevel_property_notify_event_id;
 
   GdkAtom profiler_atom;
@@ -53,7 +53,7 @@ gtk_widget_profiler_class_init (GtkWidgetProfilerClass *class)
                  G_SIGNAL_RUN_LAST,
                  G_STRUCT_OFFSET (GtkWidgetProfilerClass, create_widget),
                  NULL, NULL,
-                 _gtk_marshal_OBJECT__VOID,
+                 _testperf_marshal_OBJECT__VOID,
                  G_TYPE_OBJECT, 0);
 
   signals[REPORT] =
@@ -62,7 +62,7 @@ gtk_widget_profiler_class_init (GtkWidgetProfilerClass *class)
                  G_SIGNAL_RUN_FIRST,
                  G_STRUCT_OFFSET (GtkWidgetProfilerClass, report),
                  NULL, NULL,
-                 _gtk_marshal_VOID__ENUM_OBJECT_DOUBLE,
+                 _testperf_marshal_VOID__ENUM_OBJECT_DOUBLE,
                  G_TYPE_NONE, 3,
                  GTK_TYPE_WIDGET_PROFILER_REPORT,
                  G_TYPE_OBJECT,
@@ -96,8 +96,8 @@ reset_state (GtkWidgetProfiler *profiler)
 
   if (priv->toplevel)
     {
-      g_signal_handler_disconnect (priv->toplevel, priv->toplevel_expose_event_id);
-      priv->toplevel_expose_event_id = 0;
+      g_signal_handler_disconnect (priv->toplevel, priv->toplevel_draw_id);
+      priv->toplevel_draw_id = 0;
 
       g_signal_handler_disconnect (priv->toplevel, priv->toplevel_property_notify_event_id);
       priv->toplevel_property_notify_event_id = 0;
@@ -168,7 +168,7 @@ create_widget_via_emission (GtkWidgetProfiler *profiler)
   if (!widget)
     g_error ("The profiler emitted the \"create-widget\" signal but the signal handler returned no widget!");
 
-  if (GTK_WIDGET_VISIBLE (widget) || GTK_WIDGET_MAPPED (widget))
+  if (gtk_widget_get_visible (widget) || gtk_widget_get_mapped (widget))
     g_error ("The handler for \"create-widget\" must return an unmapped and unshown widget");
 
   return widget;
@@ -197,7 +197,7 @@ toplevel_property_notify_event_cb (GtkWidget *widget, GdkEventProperty *event, g
 }
 
 static gboolean
-toplevel_idle_after_expose_cb (gpointer data)
+toplevel_idle_after_draw_cb (gpointer data)
 {
   GtkWidgetProfiler *profiler;
   GtkWidgetProfilerPrivate *priv;
@@ -205,7 +205,7 @@ toplevel_idle_after_expose_cb (gpointer data)
   profiler = GTK_WIDGET_PROFILER (data);
   priv = profiler->priv;
 
-  gdk_property_change (priv->toplevel->window,
+  gdk_property_change (gtk_widget_get_window (priv->toplevel),
                       priv->profiler_atom,
                       gdk_atom_intern ("STRING", FALSE),
                       8,
@@ -217,13 +217,13 @@ toplevel_idle_after_expose_cb (gpointer data)
 }
 
 static gboolean
-toplevel_expose_event_cb (GtkWidget *widget, GdkEventExpose *event, gpointer data)
+toplevel_draw_cb (GtkWidget *widget, cairo_t *cr, gpointer data)
 {
   GtkWidgetProfiler *profiler;
 
   profiler = GTK_WIDGET_PROFILER (data);
 
-  gdk_threads_add_idle_full (G_PRIORITY_HIGH, toplevel_idle_after_expose_cb, profiler, NULL);
+  gdk_threads_add_idle_full (G_PRIORITY_HIGH, toplevel_idle_after_draw_cb, profiler, NULL);
   return FALSE;
 }
 
@@ -235,8 +235,8 @@ instrument_toplevel (GtkWidgetProfiler *profiler,
 
   priv = profiler->priv;
 
-  priv->toplevel_expose_event_id = g_signal_connect (toplevel, "expose-event",
-                                                    G_CALLBACK (toplevel_expose_event_cb), profiler);
+  priv->toplevel_draw_id = g_signal_connect (toplevel, "draw",
+                                            G_CALLBACK (toplevel_draw_cb), profiler);
 
   gtk_widget_add_events (toplevel, GDK_PROPERTY_CHANGE_MASK);
   priv->toplevel_property_notify_event_id = g_signal_connect (toplevel, "property-notify-event",
@@ -390,6 +390,7 @@ static void
 profile_expose (GtkWidgetProfiler *profiler)
 {
   GtkWidgetProfilerPrivate *priv;
+  GtkAllocation allocation;
   GdkWindow *window;
   GdkWindowAttr attr;
   int attr_mask;
@@ -400,17 +401,19 @@ profile_expose (GtkWidgetProfiler *profiler)
 
   /* Time creation */
 
+  gtk_widget_get_allocation (priv->toplevel, &allocation);
+
   attr.x = 0;
   attr.y = 0;
-  attr.width = priv->toplevel->allocation.width;
-  attr.height = priv->toplevel->allocation.width;
+  attr.width = allocation.width;
+  attr.height = allocation.width;
   attr.wclass = GDK_INPUT_OUTPUT;
-  attr.window_type = GDK_WINDOW_CHILD;
+  attr.window_type = GDK_WINDOW_TEMP;
 
   attr_mask = GDK_WA_X | GDK_WA_Y;
 
-  window = gdk_window_new (priv->toplevel->window, &attr, attr_mask);
-  gdk_window_set_back_pixmap (window, NULL, TRUE); /* avoid flicker */
+  window = gdk_window_new (gdk_screen_get_root_window (gtk_widget_get_screen (priv->toplevel)),
+                           &attr, attr_mask);
 
   gdk_window_show (window);
   gdk_window_hide (window);