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



commit a1ae7ff1883e4d32d7b2457746c6df8d6a6d5bcb
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 | 11 +++++++++++
 1 file changed, 11 insertions(+)
---
diff --git a/gtk/gtkiconhelper.c b/gtk/gtkiconhelper.c
index c891cecbdd..3aeeb8b168 100644
--- a/gtk/gtkiconhelper.c
+++ b/gtk/gtkiconhelper.c
@@ -35,6 +35,7 @@
 #include "gtkscalerprivate.h"
 #include "gtksnapshot.h"
 #include "gtkwidgetprivate.h"
+#include "gdk/gdkprofilerprivate.h"
 
 struct _GtkIconHelper
 {
@@ -143,11 +144,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 +160,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 +171,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 +184,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]