[evolution] EShellBackend: Log outstanding activities during shutdown.
- From: Matthew Barnes <mbarnes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution] EShellBackend: Log outstanding activities during shutdown.
- Date: Thu, 18 Apr 2013 19:55:26 +0000 (UTC)
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]