[gtk/matthiasc/for-master] iconhelper: Add profiler marks around icon loading



commit 514a2cd7c1194a991477263c5a7a438d68cc8415
Author: Matthias Clasen <mclasen redhat com>
Date:   Wed Jan 22 21:30:22 2020 -0500

    iconhelper: Add profiler marks around icon loading
    
    These mainly happen during the first frame, causing
    it to be longer than 'normal' frames.

 gtk/gtkiconhelper.c | 10 ++++++++++
 1 file changed, 10 insertions(+)
---
diff --git a/gtk/gtkiconhelper.c b/gtk/gtkiconhelper.c
index c891cecbdd..73c9cfb039 100644
--- a/gtk/gtkiconhelper.c
+++ b/gtk/gtkiconhelper.c
@@ -143,11 +143,14 @@ gtk_icon_helper_load_paintable (GtkIconHelper   *self,
   GdkPaintable *paintable;
   GIcon *gicon;
   gboolean symbolic;
+  gint64 before = g_get_monotonic_time ();
+  char *item;
 
   switch (gtk_image_definition_get_storage_type (self->def))
     {
     case GTK_IMAGE_PAINTABLE:
       paintable = g_object_ref (gtk_image_definition_get_paintable (self->def));
+      item = g_strdup ("paintable");
       symbolic = FALSE;
       break;
 
@@ -156,6 +159,7 @@ gtk_icon_helper_load_paintable (GtkIconHelper   *self,
         gicon = g_themed_icon_new_with_default_fallbacks (gtk_image_definition_get_icon_name (self->def));
       else
         gicon = g_themed_icon_new (gtk_image_definition_get_icon_name (self->def));
+      item = g_icon_to_string (gicon);
       paintable = ensure_paintable_for_gicon (self,
                                               gtk_css_node_get_style (self->node),
                                               gtk_widget_get_direction (self->owner),
@@ -166,6 +170,7 @@ gtk_icon_helper_load_paintable (GtkIconHelper   *self,
       break;
 
     case GTK_IMAGE_GICON:
+      item = g_icon_to_string (gtk_image_definition_get_gicon (self->def));
       paintable = ensure_paintable_for_gicon (self, 
                                               gtk_css_node_get_style (self->node),
                                               gtk_widget_get_direction (self->owner),
@@ -178,11 +183,16 @@ gtk_icon_helper_load_paintable (GtkIconHelper   *self,
     default:
       paintable = NULL;
       symbolic = FALSE;
+      item = NULL;
       break;
     }
 
   *out_symbolic = symbolic;
 
+  if (gdk_profiler_is_running ())
+    gdk_profiler_add_mark (before * 1000, (g_get_monotonic_time () - before) * 1000, "icon helper load", 
item);
+  g_free (item);
+
   return paintable;
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]