diff options
author | Pacho Ramos <pacho@gentoo.org> | 2014-03-16 14:41:07 +0000 |
---|---|---|
committer | Pacho Ramos <pacho@gentoo.org> | 2014-03-16 14:41:07 +0000 |
commit | 3f07088122817b7b78d1df673ac090b64d772fa7 (patch) | |
tree | fafabf04cd40f86ce05cca84c97de7cef31f9e66 /mail-client | |
parent | Drop broken version (diff) | |
download | gentoo-2-3f07088122817b7b78d1df673ac090b64d772fa7.tar.gz gentoo-2-3f07088122817b7b78d1df673ac090b64d772fa7.tar.bz2 gentoo-2-3f07088122817b7b78d1df673ac090b64d772fa7.zip |
Apply some fixes from upstream 3.8 branch that also solves crash with IMAP folder creation (#504062 by Jaroslaw Strauchmann)
(Portage version: 2.2.8-r1/cvs/Linux x86_64, signed Manifest commit with key A188FBD4)
Diffstat (limited to 'mail-client')
-rw-r--r-- | mail-client/evolution/ChangeLog | 11 | ||||
-rw-r--r-- | mail-client/evolution/evolution-3.10.4-r1.ebuild (renamed from mail-client/evolution/evolution-3.10.3.ebuild) | 13 | ||||
-rw-r--r-- | mail-client/evolution/files/evolution-3.10.4-imap-crash.patch | 40 | ||||
-rw-r--r-- | mail-client/evolution/files/evolution-3.10.4-main-ui.patch | 68 | ||||
-rw-r--r-- | mail-client/evolution/files/evolution-3.10.4-nntp-outbox.patch | 77 |
5 files changed, 206 insertions, 3 deletions
diff --git a/mail-client/evolution/ChangeLog b/mail-client/evolution/ChangeLog index 04a1b6f07e85..451a702f6062 100644 --- a/mail-client/evolution/ChangeLog +++ b/mail-client/evolution/ChangeLog @@ -1,6 +1,15 @@ # ChangeLog for mail-client/evolution # Copyright 1999-2014 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/mail-client/evolution/ChangeLog,v 1.416 2014/03/09 12:01:21 pacho Exp $ +# $Header: /var/cvsroot/gentoo-x86/mail-client/evolution/ChangeLog,v 1.417 2014/03/16 14:41:07 pacho Exp $ + +*evolution-3.10.4-r1 (16 Mar 2014) + + 16 Mar 2014; Pacho Ramos <pacho@gentoo.org> +evolution-3.10.4-r1.ebuild, + +files/evolution-3.10.4-imap-crash.patch, + +files/evolution-3.10.4-main-ui.patch, + +files/evolution-3.10.4-nntp-outbox.patch, -evolution-3.10.3.ebuild: + Apply some fixes from upstream 3.8 branch that also solves crash with IMAP + folder creation (#504062 by Jaroslaw Strauchmann) 09 Mar 2014; Pacho Ramos <pacho@gentoo.org> evolution-3.10.4.ebuild: x86 stable, bug 499954 diff --git a/mail-client/evolution/evolution-3.10.3.ebuild b/mail-client/evolution/evolution-3.10.4-r1.ebuild index 95daa7da0e59..8f4c3f13e6f2 100644 --- a/mail-client/evolution/evolution-3.10.3.ebuild +++ b/mail-client/evolution/evolution-3.10.4-r1.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2014 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/mail-client/evolution/evolution-3.10.3.ebuild,v 1.3 2014/01/21 22:57:04 eva Exp $ +# $Header: /var/cvsroot/gentoo-x86/mail-client/evolution/evolution-3.10.4-r1.ebuild,v 1.1 2014/03/16 14:41:07 pacho Exp $ EAPI="5" GCONF_DEBUG="no" @@ -9,7 +9,7 @@ GNOME2_LA_PUNT="yes" inherit eutils flag-o-matic readme.gentoo gnome2 #autotools DESCRIPTION="Integrated mail, addressbook and calendaring functionality" -HOMEPAGE="https://live.gnome.org/Evolution http://projects.gnome.org/evolution/" +HOMEPAGE="https://wiki.gnome.org/Apps/Evolution" # Note: explicitly "|| ( LGPL-2 LGPL-3 )", not "LGPL-2+". LICENSE="|| ( LGPL-2 LGPL-3 ) CC-BY-SA-3.0 FDL-1.3+ OPENLDAP" @@ -100,6 +100,15 @@ src_prepare() { DOCS="AUTHORS ChangeLog* HACKING MAINTAINERS NEWS* README" + # Run EMailFormatter in the main/UI thread (from 3.8 branch) + epatch "${FILESDIR}/${P}-main-ui.patch" + + # NNTP Messages are silently dropped from Outbox (from 3.8 branch) + epatch "${FILESDIR}/${P}-nntp-outbox.patch" + + # Crash creating a new folder (from 3.8 branch) + epatch "${FILESDIR}/${P}-imap-crash.patch" + #eautoreconf # See https://bugzilla.gnome.org/701904 gnome2_src_prepare diff --git a/mail-client/evolution/files/evolution-3.10.4-imap-crash.patch b/mail-client/evolution/files/evolution-3.10.4-imap-crash.patch new file mode 100644 index 000000000000..4d9d59961a68 --- /dev/null +++ b/mail-client/evolution/files/evolution-3.10.4-imap-crash.patch @@ -0,0 +1,40 @@ +From 5e4b28e2fae285fa632ab189707489e0df8d79aa Mon Sep 17 00:00:00 2001 +From: Fabiano Fidêncio <fidencio@redhat.com> +Date: Tue, 21 Jan 2014 14:48:54 +0000 +Subject: Bug #722698 - Crash creating a new folder + +--- +diff --git a/mail/em-folder-tree.c b/mail/em-folder-tree.c +index b15041a..cd7f67e 100644 +--- a/mail/em-folder-tree.c ++++ b/mail/em-folder-tree.c +@@ -1108,15 +1108,27 @@ folder_tree_dispose (GObject *object) + { + EMFolderTreePrivate *priv; + GtkTreeModel *model; ++ GtkTreeSelection *selection; + + priv = EM_FOLDER_TREE_GET_PRIVATE (object); + model = gtk_tree_view_get_model (GTK_TREE_VIEW (object)); ++ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (object)); + + if (priv->loaded_row_id != 0) { + g_signal_handler_disconnect (model, priv->loaded_row_id); + priv->loaded_row_id = 0; + } + ++ if (priv->loading_row_id != 0) { ++ g_signal_handler_disconnect (model, priv->loading_row_id); ++ priv->loading_row_id = 0; ++ } ++ ++ if (priv->selection_changed_handler_id != 0) { ++ g_signal_handler_disconnect (selection, priv->selection_changed_handler_id); ++ priv->selection_changed_handler_id = 0; ++ } ++ + if (priv->autoscroll_id != 0) { + g_source_remove (priv->autoscroll_id); + priv->autoscroll_id = 0; +-- +cgit v0.9.2 diff --git a/mail-client/evolution/files/evolution-3.10.4-main-ui.patch b/mail-client/evolution/files/evolution-3.10.4-main-ui.patch new file mode 100644 index 000000000000..086fdad0b50e --- /dev/null +++ b/mail-client/evolution/files/evolution-3.10.4-main-ui.patch @@ -0,0 +1,68 @@ +From 37a95e0e6b74fa9fe1692c788983142d8d4774d4 Mon Sep 17 00:00:00 2001 +From: Milan Crha <mcrha@redhat.com> +Date: Mon, 10 Feb 2014 14:59:24 +0000 +Subject: Bug #724023 - Run EMailFormatter in the main/UI thread + +Any GtkWidget creation or manipulation should be done exclusively +from the main/UI thread, thus make sure it is done that way. +Of course, evolution can freeze for a little time (depends on the message +size), until its formatting is done. It's unnoticeable with usual messages. +--- +diff --git a/em-format/e-mail-part-attachment-bar.c b/em-format/e-mail-part-attachment-bar.c +index 5cebd9b..57f49be 100644 +--- a/em-format/e-mail-part-attachment-bar.c ++++ b/em-format/e-mail-part-attachment-bar.c +@@ -60,12 +60,7 @@ e_mail_part_attachment_bar_class_init (EMailPartAttachmentBarClass *class) + static void + e_mail_part_attachment_bar_init (EMailPartAttachmentBar *part) + { +- GtkTreeModel *tree_model; +- + part->priv = E_MAIL_PART_ATTACHMENT_BAR_GET_PRIVATE (part); +- +- tree_model = e_attachment_store_new (); +- part->priv->store = E_ATTACHMENT_STORE (tree_model); + } + + EMailPart * +@@ -84,6 +79,18 @@ e_mail_part_attachment_bar_get_store (EMailPartAttachmentBar *part) + { + g_return_val_if_fail (E_IS_MAIL_PART_ATTACHMENT_BAR (part), NULL); + ++ if (!part->priv->store) { ++ GtkTreeModel *tree_model; ++ ++ /* Create the store only on demand. The EMailParser runs in a dedicated ++ thread, but the EAttachmentStore is a GtkWidget descendant, which should ++ be manipulated only from the main/UI thread, thus postpone its creating ++ until it's really needed, which might be during the EMailFormatter run, ++ which runs from the main/UI thread. */ ++ tree_model = e_attachment_store_new (); ++ part->priv->store = E_ATTACHMENT_STORE (tree_model); ++ } ++ + return part->priv->store; + } + +diff --git a/mail/e-mail-request.c b/mail/e-mail-request.c +index bfbedc3..615bce3 100644 +--- a/mail/e-mail-request.c ++++ b/mail/e-mail-request.c +@@ -365,9 +365,12 @@ mail_request_send_async (SoupRequest *request, + simple, handle_contact_photo_request, + G_PRIORITY_DEFAULT, cancellable); + } else { +- g_simple_async_result_run_in_thread ( +- simple, handle_mail_request, +- G_PRIORITY_DEFAULT, cancellable); ++ /* Process e-mail mail requests in this thread, which should be ++ the main/UI thread, because any EMailFormatter can create ++ GtkWidget-s, or manipulate with them, which should be always ++ done in the main/UI thread. */ ++ handle_mail_request (simple, G_OBJECT (request), cancellable); ++ g_simple_async_result_complete_in_idle (simple); + } + + g_object_unref (simple); +-- +cgit v0.9.2 diff --git a/mail-client/evolution/files/evolution-3.10.4-nntp-outbox.patch b/mail-client/evolution/files/evolution-3.10.4-nntp-outbox.patch new file mode 100644 index 000000000000..574591e098f8 --- /dev/null +++ b/mail-client/evolution/files/evolution-3.10.4-nntp-outbox.patch @@ -0,0 +1,77 @@ +From 9de8f573e9eba07a096c7f97f97bb5ac876278c8 Mon Sep 17 00:00:00 2001 +From: Milan Crha <mcrha@redhat.com> +Date: Mon, 10 Feb 2014 16:57:28 +0000 +Subject: Bug #722041 - NNTP Messages are silently dropped from Outbox + +--- +diff --git a/libemail-engine/mail-ops.c b/libemail-engine/mail-ops.c +index 4f3dbd3..4db5dae 100644 +--- a/libemail-engine/mail-ops.c ++++ b/libemail-engine/mail-ops.c +@@ -682,22 +682,18 @@ mail_send_message (struct _send_queue_msg *m, + info = camel_message_info_new (NULL); + camel_message_info_set_flags (info, CAMEL_MESSAGE_SEEN, ~0); + +- for (header = xev; header; header = header->next) { ++ for (header = xev; header && !local_error; header = header->next) { + gchar *uri; + + if (strcmp (header->name, "X-Evolution-PostTo") != 0) + continue; + +- /* TODO: don't lose errors */ +- + uri = g_strstrip (g_strdup (header->value)); +- /* FIXME Not passing a GCancellable or GError here. */ + folder = e_mail_session_uri_to_folder_sync ( +- m->session, uri, 0, NULL, NULL); ++ m->session, uri, 0, cancellable, &local_error); + if (folder != NULL) { +- /* FIXME Not passing a GCancellable or GError here. */ + camel_folder_append_message_sync ( +- folder, message, info, NULL, NULL, NULL); ++ folder, message, info, NULL, cancellable, &local_error); + g_object_unref (folder); + folder = NULL; + } +@@ -707,7 +703,7 @@ mail_send_message (struct _send_queue_msg *m, + /* post process */ + mail_tool_restore_xevolution_headers (message, xev); + +- if (driver) { ++ if (local_error == NULL && driver) { + camel_filter_driver_filter_message ( + driver, message, info, NULL, NULL, + NULL, "", cancellable, &local_error); +@@ -735,10 +731,9 @@ mail_send_message (struct _send_queue_msg *m, + } + } + +- if (provider == NULL +- || !(provider->flags & CAMEL_PROVIDER_DISABLE_SENT_FOLDER)) { ++ if (local_error == NULL && (provider == NULL ++ || !(provider->flags & CAMEL_PROVIDER_DISABLE_SENT_FOLDER))) { + CamelFolder *local_sent_folder; +- GError *local_error = NULL; + + local_sent_folder = e_mail_session_get_local_folder ( + m->session, E_MAIL_LOCAL_FOLDER_SENT); +@@ -798,6 +793,7 @@ mail_send_message (struct _send_queue_msg *m, + _("Failed to append to " + "local 'Sent' folder: %s"), + local_error->message); ++ g_clear_error (&local_error); + } + } + } +@@ -836,7 +832,7 @@ mail_send_message (struct _send_queue_msg *m, + camel_folder_synchronize_sync (queue, FALSE, NULL, NULL); + } + +- if (err->len > 0) { ++ if (local_error == NULL && err->len > 0) { + /* set the culmulative exception report */ + g_set_error ( + &local_error, CAMEL_ERROR, +-- +cgit v0.9.2 |