diff --git a/evo-2.91.5-finish-tasks-before-camel-shutdown.patch b/evo-2.91.5-finish-tasks-before-camel-shutdown.patch new file mode 100644 index 0000000..28c7588 --- /dev/null +++ b/evo-2.91.5-finish-tasks-before-camel-shutdown.patch @@ -0,0 +1,48 @@ +diff --git a/mail/e-mail-backend.c b/mail/e-mail-backend.c +index 740cf85..3ab7cbd 100644 +--- a/mail/e-mail-backend.c ++++ b/mail/e-mail-backend.c +@@ -226,7 +226,6 @@ mail_backend_poll_to_quit (EActivity *activity) + static void + mail_backend_ready_to_quit (EActivity *activity) + { +- camel_shutdown (); + emu_free_mail_cache (); + + /* Do this last. It may terminate the process. */ +@@ -429,6 +428,15 @@ mail_backend_dispose (GObject *object) + } + + static void ++mail_backend_finalize (GObject *object) ++{ ++ if (G_OBJECT_CLASS (e_mail_backend_parent_class)->finalize) ++ G_OBJECT_CLASS (e_mail_backend_parent_class)->finalize (object); ++ ++ camel_shutdown (); ++} ++ ++static void + mail_backend_constructed (GObject *object) + { + EMailBackendPrivate *priv; +@@ -515,6 +523,7 @@ e_mail_backend_class_init (EMailBackendClass *class) + object_class = G_OBJECT_CLASS (class); + object_class->get_property = mail_backend_get_property; + object_class->dispose = mail_backend_dispose; ++ object_class->finalize = mail_backend_finalize; + object_class->constructed = mail_backend_constructed; + + shell_backend_class = E_SHELL_BACKEND_CLASS (class); +diff --git a/shell/e-shell.c b/shell/e-shell.c +index b1891ce..123a975 100644 +--- a/shell/e-shell.c ++++ b/shell/e-shell.c +@@ -691,6 +691,7 @@ shell_finalize (GObject *object) + if (!unique_app_is_running (UNIQUE_APP (object))) + e_file_lock_destroy (); + ++ g_list_foreach (priv->loaded_backends, (GFunc) g_object_unref, NULL); + g_list_free (priv->loaded_backends); + + g_free (priv->geometry);