[evolution] EShellBackend: Log outstanding activities during shutdown.



commit fd6ff38fbd6dc82fe16c157dbdb4602b3277abfa
Author: Matthew Barnes <mbarnes redhat com>
Date:   Thu Apr 18 14:38:35 2013 -0400

    EShellBackend: Log outstanding activities during shutdown.
    
    Log debug messages for outstanding activities during shutdown to
    help investigate stuck shutdown issues.
    
    Enable this feature with: G_MESSAGES_DEBUG=evolution-shell

 shell/e-shell-backend.c | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)
---
diff --git a/shell/e-shell-backend.c b/shell/e-shell-backend.c
index 31e3809..0749aac 100644
--- a/shell/e-shell-backend.c
+++ b/shell/e-shell-backend.c
@@ -82,6 +82,40 @@ static guint signals[LAST_SIGNAL];
 G_DEFINE_ABSTRACT_TYPE (EShellBackend, e_shell_backend, E_TYPE_EXTENSION)
 
 static void
+shell_backend_debug_list_activities (EShellBackend *shell_backend)
+{
+       EShellBackendClass *class;
+       GList *head, *link;
+       guint n_activities;
+
+       class = E_SHELL_BACKEND_GET_CLASS (shell_backend);
+
+       n_activities = g_queue_get_length (shell_backend->priv->activities);
+
+       if (n_activities == 0)
+               return;
+
+       g_debug (
+               "%u active '%s' %s:",
+               n_activities, class->name,
+               (n_activities == 1) ? "activity" : "activities");
+
+       head = g_queue_peek_head_link (shell_backend->priv->activities);
+
+       for (link = head; link != NULL; link = g_list_next (link)) {
+               EActivity *activity = E_ACTIVITY (link->data);
+               gchar *description;
+
+               description = e_activity_describe (activity);
+               if (description != NULL)
+                       g_debug ("* %s", description);
+               else
+                       g_debug ("* (no description)");
+               g_free (description);
+       }
+}
+
+static void
 shell_backend_activity_finalized_cb (EShellBackend *shell_backend,
                                      EActivity *finalized_activity)
 {
@@ -99,6 +133,8 @@ shell_backend_notify_busy_cb (EShellBackend *shell_backend,
                               GParamSpec *pspec,
                               EActivity *activity)
 {
+       shell_backend_debug_list_activities (shell_backend);
+
        if (!e_shell_backend_is_busy (shell_backend)) {
                /* Disconnecting this signal handler will unreference the
                 * EActivity and allow the shell to proceed with shutdown. */
@@ -114,6 +150,8 @@ shell_backend_prepare_for_quit_cb (EShell *shell,
                                    EActivity *activity,
                                    EShellBackend *shell_backend)
 {
+       shell_backend_debug_list_activities (shell_backend);
+
        if (e_shell_backend_is_busy (shell_backend)) {
                gulong handler_id;
 


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