summaryrefslogtreecommitdiff
path: root/gtk/gtkmain.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-07-22 11:36:29 -0400
committerMatthias Clasen <mclasen@redhat.com>2021-07-22 12:51:32 -0400
commita10b1b7341822ca751709459f1e21a31641df9a2 (patch)
tree2afeaa563bb382796598c3af7180abb53f54cb4c /gtk/gtkmain.c
parent02c62267413c2c187a77f7f91610690f8b0a5d0a (diff)
downloadgtk+-a10b1b7341822ca751709459f1e21a31641df9a2.tar.gz
Add more sysprof marks
Add a few more marks during gtk_init to figure out where our startup time goes, and avoid the sysprof initialization from distorting the first mark.
Diffstat (limited to 'gtk/gtkmain.c')
-rw-r--r--gtk/gtkmain.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c
index accaee07c1..9a7b36eb05 100644
--- a/gtk/gtkmain.c
+++ b/gtk/gtkmain.c
@@ -26,6 +26,7 @@
#include "gdk/gdk.h"
#include "gdk/gdk-private.h"
+#include "gdk/gdkprofilerprivate.h"
#include "gsk/gskprivate.h"
#include "gsk/gskrendernodeprivate.h"
#include "gtknative.h"
@@ -520,10 +521,13 @@ static void
do_post_parse_initialization (void)
{
GdkDisplayManager *display_manager;
+ gint64 before G_GNUC_UNUSED;
if (gtk_initialized)
return;
+ before = GDK_PROFILER_CURRENT_TIME;
+
gettext_initialization ();
#ifdef SIGPIPE
@@ -533,21 +537,28 @@ do_post_parse_initialization (void)
gtk_widget_set_default_direction (gtk_get_locale_direction ());
gdk_event_init_types ();
+
gsk_ensure_resources ();
gsk_render_node_init_types ();
_gtk_ensure_resources ();
+ gdk_profiler_end_mark (before, "basic initialization", NULL);
+
gtk_initialized = TRUE;
+ before = GDK_PROFILER_CURRENT_TIME;
#ifdef G_OS_UNIX
gtk_print_backends_init ();
#endif
gtk_im_modules_init ();
gtk_media_file_extension_init ();
+ gdk_profiler_end_mark (before, "init modules", NULL);
+ before = GDK_PROFILER_CURRENT_TIME;
display_manager = gdk_display_manager_get ();
if (gdk_display_manager_get_default_display (display_manager) != NULL)
default_display_notify_cb (display_manager);
+ gdk_profiler_end_mark (before, "create display", NULL);
g_signal_connect (display_manager, "notify::default-display",
G_CALLBACK (default_display_notify_cb),
@@ -580,6 +591,9 @@ gtk_init_check (void)
if (gtk_initialized)
return TRUE;
+ if (gdk_profiler_is_running ())
+ g_info ("Profiling is active");
+
gettext_initialization ();
if (!check_setugid ())