aboutsummaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2013-04-19 02:38:35 +0800
committerMatthew Barnes <mbarnes@redhat.com>2013-04-19 03:53:06 +0800
commitfd6ff38fbd6dc82fe16c157dbdb4602b3277abfa (patch)
tree9b6c0947b6655e8bac44ab3b3638c9c2e1ebc581 /shell
parent7a2673a359ed80ba3f3bcd569de108432da18e11 (diff)
downloadgsoc2013-evolution-fd6ff38fbd6dc82fe16c157dbdb4602b3277abfa.tar
gsoc2013-evolution-fd6ff38fbd6dc82fe16c157dbdb4602b3277abfa.tar.gz
gsoc2013-evolution-fd6ff38fbd6dc82fe16c157dbdb4602b3277abfa.tar.bz2
gsoc2013-evolution-fd6ff38fbd6dc82fe16c157dbdb4602b3277abfa.tar.lz
gsoc2013-evolution-fd6ff38fbd6dc82fe16c157dbdb4602b3277abfa.tar.xz
gsoc2013-evolution-fd6ff38fbd6dc82fe16c157dbdb4602b3277abfa.tar.zst
gsoc2013-evolution-fd6ff38fbd6dc82fe16c157dbdb4602b3277abfa.zip
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
Diffstat (limited to 'shell')
-rw-r--r--shell/e-shell-backend.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/shell/e-shell-backend.c b/shell/e-shell-backend.c
index 31e3809903..0749aac4e6 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;