iconhelper: Add profiler marks around icon loading

These mainly happen during the first frame, causing
it to be longer than 'normal' frames.
This commit is contained in:
Matthias Clasen
2020-01-22 21:30:22 -05:00
parent 0fe9643728
commit 9b29da93b6

View File

@@ -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;
}