window: Add a profiler mark around size allocation
authorMatthias Clasen <mclasen@redhat.com>
Wed, 22 Jan 2020 04:43:01 +0000 (23:43 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Wed, 22 Jan 2020 04:43:01 +0000 (23:43 -0500)
This give a high-level entry for the duration of size allocation
in the frame cycle.

gtk/gtkwindow.c

index e390e6bca22af85db6b2540b376a836ba3ad2507..ec74cbb30f684f1e90312172d658e5604bfb4285 100644 (file)
@@ -75,6 +75,7 @@
 
 #include "gdk/gdktextureprivate.h"
 #include "gdk/gdk-private.h"
+#include "gdk/gdkprofilerprivate.h"
 
 #include <cairo-gobject.h>
 #include <errno.h>
@@ -6014,6 +6015,7 @@ surface_render (GdkSurface     *surface,
                 GtkWidget      *widget)
 {
   gtk_widget_render (widget, surface, region);
+
   return TRUE;
 }
 
@@ -6304,11 +6306,18 @@ void
 gtk_window_check_resize (GtkWindow *self)
 {
   GtkWidget *widget = GTK_WIDGET (self);
+  gint64 before = g_get_monotonic_time ();
 
   if (!_gtk_widget_get_alloc_needed (widget))
     gtk_widget_ensure_allocate (widget);
   else if (gtk_widget_get_visible (widget))
     gtk_window_move_resize (self);
+
+  if (gdk_profiler_is_running ())
+    {
+      gint64 after = g_get_monotonic_time ();
+      gdk_profiler_add_mark (before * 1000, (after - before) * 1000, "layout", "");
+    }
 }
 
 static void