From d3601da43abb94870aae346857809b2ef172107b Mon Sep 17 00:00:00 2001 From: William Jon McCann Date: Mon, 24 Mar 2008 01:52:43 +0000 Subject: Add some more profiling stuff. 2008-03-23 William Jon McCann * common/gdm-profile.h: * configure.ac: * gui/simple-greeter/gdm-greeter-client.c: (gdm_greeter_client_start): * gui/simple-greeter/gdm-greeter-session.c: (toggle_panel), (toggle_login_window), (launch_compiz), (launch_metacity), (start_window_manager), (activate_settings_daemon), (gdm_greeter_session_start): * gui/simple-greeter/gdm-session-manager.c: (_change_level), (gdm_session_manager_set_level): * gui/simple-greeter/greeter-main.c: (load_a11y), (main): Add some more profiling stuff. The greeter can now be profiled like so: strace -ttt -f -o /tmp/logfile.strace -p `/sbin/pidof gdm-binary` python plot-timeline.py -o prettygraph.png /tmp/logfile.strace See: http://www.gnome.org/~federico/news-2006-03.html#09 svn path=/trunk/; revision=6053 --- gui/simple-greeter/gdm-greeter-client.c | 5 ++++ gui/simple-greeter/gdm-greeter-session.c | 47 ++++++++++++++------------------ gui/simple-greeter/gdm-session-manager.c | 7 +++++ gui/simple-greeter/greeter-main.c | 9 ++++++ 4 files changed, 42 insertions(+), 26 deletions(-) (limited to 'gui') diff --git a/gui/simple-greeter/gdm-greeter-client.c b/gui/simple-greeter/gdm-greeter-client.c index aaa6370b..a341b911 100644 --- a/gui/simple-greeter/gdm-greeter-client.c +++ b/gui/simple-greeter/gdm-greeter-client.c @@ -35,6 +35,7 @@ #include "gdm-greeter-client.h" #include "gdm-marshal.h" +#include "gdm-profile.h" #define GDM_GREETER_CLIENT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_GREETER_CLIENT, GdmGreeterClientPrivate)) @@ -688,6 +689,8 @@ gdm_greeter_client_start (GdmGreeterClient *client, g_return_val_if_fail (GDM_IS_GREETER_CLIENT (client), FALSE); + gdm_profile_start (NULL); + ret = FALSE; if (client->priv->address == NULL) { @@ -730,6 +733,8 @@ gdm_greeter_client_start (GdmGreeterClient *client, ret = TRUE; out: + gdm_profile_end (NULL); + return ret; } diff --git a/gui/simple-greeter/gdm-greeter-session.c b/gui/simple-greeter/gdm-greeter-session.c index e3527e4b..a7fbda15 100644 --- a/gui/simple-greeter/gdm-greeter-session.c +++ b/gui/simple-greeter/gdm-greeter-session.c @@ -40,6 +40,7 @@ #include "gdm-session-manager.h" #include "gdm-session-client.h" +#include "gdm-profile.h" #define GDM_GREETER_SESSION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_GREETER_SESSION, GdmGreeterSessionPrivate)) @@ -272,6 +273,8 @@ toggle_panel (GdmSessionManager *manager, gboolean enabled, GdmGreeterSession *session) { + gdm_profile_start (NULL); + if (enabled) { session->priv->panel = gdm_greeter_panel_new (); @@ -290,6 +293,8 @@ toggle_panel (GdmSessionManager *manager, gtk_widget_destroy (session->priv->panel); session->priv->panel = NULL; } + + gdm_profile_end (NULL); } static void @@ -297,6 +302,8 @@ toggle_login_window (GdmSessionManager *manager, gboolean enabled, GdmGreeterSession *session) { + gdm_profile_start (NULL); + if (enabled) { gboolean is_local; @@ -341,6 +348,7 @@ toggle_login_window (GdmSessionManager *manager, gtk_widget_destroy (session->priv->login_window); session->priv->login_window = NULL; } + gdm_profile_end (NULL); } static gboolean @@ -349,6 +357,7 @@ launch_compiz (GdmGreeterSession *session) GError *error; gboolean ret; + gdm_profile_start (NULL); g_debug ("GdmGreeterSession: Launching compiz"); ret = FALSE; @@ -376,6 +385,7 @@ launch_compiz (GdmGreeterSession *session) /* FIXME: should try to detect if it actually works */ out: + gdm_profile_end (NULL); return ret; } @@ -385,6 +395,8 @@ launch_metacity (GdmGreeterSession *session) GError *error; gboolean ret; + gdm_profile_start (NULL); + g_debug ("GdmGreeterSession: Launching metacity"); ret = FALSE; @@ -400,6 +412,7 @@ launch_metacity (GdmGreeterSession *session) ret = TRUE; out: + gdm_profile_end (NULL); return ret; } @@ -409,8 +422,6 @@ start_window_manager (GdmGreeterSession *session) gboolean use_compiz; GConfClient *client; - /* FIXME: check for COMPOSITE */ - client = gconf_client_get_default (); use_compiz = gconf_client_get_bool (client, KEY_WM_USE_COMPIZ, NULL); g_object_unref (client); @@ -628,6 +639,8 @@ activate_settings_daemon (GdmGreeterSession *session) DBusError local_error; DBusConnection *connection; + gdm_profile_start (NULL); + g_debug ("GdmGreeterLoginWindow: activating settings daemon"); dbus_error_init (&local_error); @@ -635,7 +648,7 @@ activate_settings_daemon (GdmGreeterSession *session) if (connection == NULL) { g_debug ("Failed to connect to the D-Bus daemon: %s", local_error.message); dbus_error_free (&local_error); - return FALSE; + goto out; } res = send_dbus_string_method (connection, @@ -648,30 +661,8 @@ activate_settings_daemon (GdmGreeterSession *session) ret = TRUE; g_debug ("GdmGreeterLoginWindow: settings daemon started"); out: - return ret; -} - -static gboolean -start_settings_daemon (GdmGreeterSession *session) -{ - GError *error; - gboolean ret; + gdm_profile_end (NULL); - g_debug ("GdmGreeterSession: Launching settings daemon"); - - ret = FALSE; - - error = NULL; - g_spawn_command_line_async (LIBEXECDIR "/gnome-settings-daemon --gconf-prefix=/apps/gdm/simple-greeter/settings-manager-plugins", &error); - if (error != NULL) { - g_warning ("Error starting settings daemon: %s", error->message); - g_error_free (error); - goto out; - } - - ret = TRUE; - - out: return ret; } @@ -695,10 +686,14 @@ gdm_greeter_session_start (GdmGreeterSession *session, g_return_val_if_fail (GDM_IS_GREETER_SESSION (session), FALSE); + gdm_profile_start (NULL); + res = gdm_greeter_client_start (session->priv->client, error); gdm_session_manager_set_level (session->priv->manager, GDM_SESSION_LEVEL_LOGIN_WINDOW); + gdm_profile_end (NULL); + return res; } diff --git a/gui/simple-greeter/gdm-session-manager.c b/gui/simple-greeter/gdm-session-manager.c index 80fbb4c3..a4b44ba9 100644 --- a/gui/simple-greeter/gdm-session-manager.c +++ b/gui/simple-greeter/gdm-session-manager.c @@ -31,6 +31,7 @@ #include "gdm-session-manager.h" #include "gdm-marshal.h" +#include "gdm-profile.h" #define GDM_SESSION_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_SESSION_MANAGER, GdmSessionManagerPrivate)) @@ -294,6 +295,8 @@ _change_level (GdmSessionManager *manager, GList *list; guint old_level; + gdm_profile_start (NULL); + g_debug ("GdmSessionManager: Changing level to %u", (guint)new_level); /* unlike some other run level systems @@ -371,6 +374,8 @@ _change_level (GdmSessionManager *manager, ndata->func (manager, TRUE, ndata->data); } } + + gdm_profile_end (NULL); } void @@ -383,7 +388,9 @@ gdm_session_manager_set_level (GdmSessionManager *manager, return; } + gdm_profile_start (NULL); _change_level (manager, level); + gdm_profile_end (NULL); } static void diff --git a/gui/simple-greeter/greeter-main.c b/gui/simple-greeter/greeter-main.c index 75985d29..4e5e98e3 100644 --- a/gui/simple-greeter/greeter-main.c +++ b/gui/simple-greeter/greeter-main.c @@ -36,6 +36,7 @@ #include "gdm-signal-handler.h" #include "gdm-settings-client.h" #include "gdm-settings-keys.h" +#include "gdm-profile.h" #include "gdm-greeter-session.h" @@ -202,6 +203,8 @@ load_a11y (void) gboolean a_t_support; GConfClient *gconf_client; + gdm_profile_start (NULL); + gconf_client = gconf_client_get_default (); env_a_t_support = g_getenv ("GNOME_ACCESSIBILITY"); @@ -217,6 +220,8 @@ load_a11y (void) } g_object_unref (gconf_client); + + gdm_profile_end (NULL); } @@ -295,10 +300,12 @@ main (int argc, char *argv[]) g_type_init (); + gdm_profile_start ("Initializing settings client"); if (! gdm_settings_client_init (GDMCONFDIR "/gdm.schemas", "/")) { g_critical ("Unable to initialize settings client"); exit (1); } + gdm_profile_end ("Initializing settings client"); g_debug ("Greeter session pid=%d display=%s xauthority=%s", (int)getpid (), @@ -325,11 +332,13 @@ main (int argc, char *argv[]) gdm_signal_handler_add (signal_handler, SIGHUP, signal_cb, NULL); gdm_signal_handler_add (signal_handler, SIGUSR1, signal_cb, NULL); + gdm_profile_start ("Creating new greeter session"); session = gdm_greeter_session_new (); if (session == NULL) { g_critical ("Unable to create greeter session"); exit (1); } + gdm_profile_end ("Creating new greeter session"); error = NULL; res = gdm_greeter_session_start (session, &error); -- cgit v1.2.1