From 4e7ca67286dec8a6d4e91eb5186e7a49d0020ccb Mon Sep 17 00:00:00 2001 From: Bill Nottingham Date: Fri, 18 May 2007 03:49:50 +0000 Subject: [PATCH 01/19] Initialize branch F-7 for evolution --- branch | 1 + 1 file changed, 1 insertion(+) create mode 100644 branch diff --git a/branch b/branch new file mode 100644 index 0000000..c48525c --- /dev/null +++ b/branch @@ -0,0 +1 @@ +F-7 From 02f6231b7fb24112638b57228255ac9315a8b9d4 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Tue, 29 May 2007 04:09:29 +0000 Subject: [PATCH 02/19] - Update to 2.10.2 - Remove patch for RH bug #202289 (fixed upstream). - Remove patch for RH bug #235878 (fixed upstream). - Remove patch for RH bug #238551 (fixed upstream). --- .cvsignore | 2 +- evolution-2.10.1-e-attachment-bar.patch | 11 -- evolution-2.10.1-fix-help.patch | 192 ---------------------- evolution-2.10.1-saving-attachments.patch | 115 +++++++------ evolution-2.7.92-fix-prgname.patch | 11 -- evolution.spec | 22 +-- sources | 2 +- 7 files changed, 65 insertions(+), 290 deletions(-) delete mode 100644 evolution-2.10.1-e-attachment-bar.patch delete mode 100644 evolution-2.10.1-fix-help.patch delete mode 100644 evolution-2.7.92-fix-prgname.patch diff --git a/.cvsignore b/.cvsignore index 8aa3781..42eccce 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -evolution-2.10.1.tar.bz2 +evolution-2.10.2.tar.bz2 diff --git a/evolution-2.10.1-e-attachment-bar.patch b/evolution-2.10.1-e-attachment-bar.patch deleted file mode 100644 index fdea03a..0000000 --- a/evolution-2.10.1-e-attachment-bar.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- evolution-2.10.1/widgets/misc/e-attachment-bar.c.e-attachment-bar 2007-05-01 11:22:41.000000000 -0400 -+++ evolution-2.10.1/widgets/misc/e-attachment-bar.c 2007-05-01 15:10:49.000000000 -0400 -@@ -491,6 +491,8 @@ - g_ptr_array_free (temp_arr, TRUE); - - update (bar); -+ -+ g_signal_emit (bar, signals[CHANGED], 0); - - id++; - diff --git a/evolution-2.10.1-fix-help.patch b/evolution-2.10.1-fix-help.patch deleted file mode 100644 index caf4565..0000000 --- a/evolution-2.10.1-fix-help.patch +++ /dev/null @@ -1,192 +0,0 @@ ---- evolution-2.10.1/widgets/misc/e-multi-config-dialog.c.fix-help 2007-04-09 09:10:24.000000000 -0400 -+++ evolution-2.10.1/widgets/misc/e-multi-config-dialog.c 2007-04-13 22:26:25.000000000 -0400 -@@ -192,13 +192,12 @@ - - switch (response_id) { - case GTK_RESPONSE_HELP: -- gnome_help_display_desktop (NULL, -- "evolution-" BASE_VERSION, -- "evolution-" BASE_VERSION ".xml", -- "config-prefs", -- &error); -- if (error != NULL) -+ gnome_help_display ( -+ "evolution.xml", "config-prefs", &error); -+ if (error != NULL) { - g_warning ("%s", error->message); -+ g_error_free (error); -+ } - break; - case GTK_RESPONSE_CLOSE: - default: ---- evolution-2.10.1/widgets/misc/e-send-options.c.fix-help 2007-04-13 22:25:21.000000000 -0400 -+++ evolution-2.10.1/widgets/misc/e-send-options.c 2007-04-13 22:26:25.000000000 -0400 -@@ -588,34 +588,32 @@ - - static void e_send_options_cb (GtkDialog *dialog, gint state, gpointer func_data) - { -+ ESendOptionsDialogPrivate *priv; -+ ESendOptionsDialog *sod; -+ GError *error = NULL; - -- ESendOptionsDialogPrivate *priv; -- ESendOptionsDialog *sod; -- GError *error = NULL; -- -- sod = func_data; -- priv = sod->priv; -- -- switch (state) { -- case GTK_RESPONSE_OK: -- e_send_options_get_widgets_data (sod); -- case GTK_RESPONSE_CANCEL: -- gtk_widget_hide (priv->main); -- gtk_widget_destroy (priv->main); -- g_object_unref (priv->xml); -- break; -- case GTK_RESPONSE_HELP: -- gnome_help_display_desktop (NULL, -- "evolution-" BASE_VERSION, -- "evolution-" BASE_VERSION ".xml", -- priv->help_section, -- &error); -- if (error != NULL) -- g_warning ("%s", error->message); -- break; -- } -- g_signal_emit (G_OBJECT (func_data), signals[SOD_RESPONSE], 0, state); -+ sod = func_data; -+ priv = sod->priv; -+ -+ switch (state) { -+ case GTK_RESPONSE_OK: -+ e_send_options_get_widgets_data (sod); -+ case GTK_RESPONSE_CANCEL: -+ gtk_widget_hide (priv->main); -+ gtk_widget_destroy (priv->main); -+ g_object_unref (priv->xml); -+ break; -+ case GTK_RESPONSE_HELP: -+ gnome_help_display ( -+ "evolution.xml", priv->help_section, &error); -+ if (error != NULL) { -+ g_warning ("%s", error->message); -+ g_error_free (error); -+ } -+ break; -+ } - -+ g_signal_emit (G_OBJECT (func_data), signals[SOD_RESPONSE], 0, state); - } - - gboolean ---- evolution-2.10.1/plugins/exchange-operations/exchange-send-options.c.fix-help 2007-04-13 22:25:21.000000000 -0400 -+++ evolution-2.10.1/plugins/exchange-operations/exchange-send-options.c 2007-04-13 22:26:25.000000000 -0400 -@@ -191,21 +191,20 @@ - - switch (state) { - case GTK_RESPONSE_OK: -- exchange_send_options_get_widgets_data (sod); -+ exchange_send_options_get_widgets_data (sod); - case GTK_RESPONSE_CANCEL: -- gtk_widget_hide (priv->main); -- gtk_widget_destroy (priv->main); -- g_object_unref (priv->xml); -- break; -+ gtk_widget_hide (priv->main); -+ gtk_widget_destroy (priv->main); -+ g_object_unref (priv->xml); -+ break; - case GTK_RESPONSE_HELP: -- gnome_help_display_desktop (NULL, -- "evolution-" BASE_VERSION, -- "evolution-" BASE_VERSION ".xml", -- priv->help_section, -- &error); -- if (error != NULL) -- g_warning ("%s", error->message); -- break; -+ gnome_help_display ( -+ "evolution.xml", priv->help_section, &error); -+ if (error != NULL) { -+ g_warning ("%s", error->message); -+ g_error_free (error); -+ } -+ break; - } - g_signal_emit (G_OBJECT (func_data), signals[SOD_RESPONSE], 0, state); - ---- evolution-2.10.1/addressbook/gui/contact-editor/e-contact-editor.c.fix-help 2007-04-13 22:25:21.000000000 -0400 -+++ evolution-2.10.1/addressbook/gui/contact-editor/e-contact-editor.c 2007-04-13 22:26:02.000000000 -0400 -@@ -3235,13 +3235,12 @@ - { - GError *error = NULL; - -- gnome_help_display_desktop (NULL, -- "evolution-" BASE_VERSION, -- "evolution-" BASE_VERSION ".xml", -- "usage-contact-cards", -- &error); -- if (error != NULL) -+ gnome_help_display ( -+ "evolution.xml", "usage-contact-cards", &error); -+ if (error != NULL) { - g_warning ("%s", error->message); -+ g_error_free (error); -+ } - } - - static GList * ---- evolution-2.10.1/composer/e-msg-composer.c.fix-help 2007-04-13 22:25:21.000000000 -0400 -+++ evolution-2.10.1/composer/e-msg-composer.c 2007-04-13 22:26:25.000000000 -0400 -@@ -2886,13 +2886,12 @@ - GError *error = NULL; - EMsgComposerPrivate *p = composer->priv; - -- gnome_help_display_desktop (NULL, -- "evolution-" BASE_VERSION, -- "evolution-" BASE_VERSION ".xml", -- "usage-composer", -- &error); -- if (error != NULL) -+ gnome_help_display ( -+ "evolution.xml", "usage-composer", &error); -+ if (error != NULL) { - g_warning ("%s", error->message); -+ g_error_free (error); -+ } - } - - ---- evolution-2.10.1/shell/e-shell-window.c.fix-help 2007-04-13 22:25:21.000000000 -0400 -+++ evolution-2.10.1/shell/e-shell-window.c 2007-04-13 22:26:02.000000000 -0400 -@@ -1042,7 +1042,7 @@ - bonobo_ui_util_set_ui (priv->ui_component, - PREFIX, - xmlfile, -- "evolution-" BASE_VERSION, NULL); -+ "evolution", NULL); - g_free (xmlfile); - - e_shell_window_commands_setup (window); ---- evolution-2.10.1/calendar/gui/dialogs/comp-editor.c.fix-help 2007-04-13 22:25:21.000000000 -0400 -+++ evolution-2.10.1/calendar/gui/dialogs/comp-editor.c 2007-04-13 22:26:25.000000000 -0400 -@@ -1693,13 +1693,12 @@ - - priv = editor->priv; - -- gnome_help_display_desktop (NULL, -- "evolution-" BASE_VERSION, -- "evolution-" BASE_VERSION ".xml", -- priv->help_section, -- &error); -- if (error != NULL) -+ gnome_help_display ( -+ "evolution.xml", priv->help_section, &error); -+ if (error != NULL) { - g_warning ("%s", error->message); -+ g_error_free (error); -+ } - } - - diff --git a/evolution-2.10.1-saving-attachments.patch b/evolution-2.10.1-saving-attachments.patch index 1f591f5..d47764a 100644 --- a/evolution-2.10.1-saving-attachments.patch +++ b/evolution-2.10.1-saving-attachments.patch @@ -1,5 +1,5 @@ ---- evolution-2.10.1/mail/em-utils.c.saving-attachments 2007-04-14 14:25:40.000000000 -0400 -+++ evolution-2.10.1/mail/em-utils.c 2007-04-14 15:08:50.000000000 -0400 +--- evolution-2.10.2/mail/em-utils.c.saving-attachments 2007-05-28 23:24:04.000000000 -0400 ++++ evolution-2.10.2/mail/em-utils.c 2007-05-28 23:26:18.000000000 -0400 @@ -354,28 +354,23 @@ /* Saving messages... */ @@ -13,13 +13,13 @@ - - if (response == GTK_RESPONSE_OK) { - uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (filesel)); -+ const gchar *filename; - +- - if (!e_file_can_save((GtkWindow *)filesel, uri)) { - g_free(uri); - return; - } -- ++ const gchar *filename; + - e_file_update_save_path(gtk_file_chooser_get_current_folder_uri( - GTK_FILE_CHOOSER(filesel)), TRUE); - /* FIXME: popup error if it fails? */ @@ -42,28 +42,17 @@ } /** -@@ -387,83 +382,78 @@ +@@ -387,73 +382,78 @@ * Saves a mime part to disk (prompting the user for filename). **/ void -em_utils_save_part(GtkWidget *parent, const char *prompt, CamelMimePart *part) +em_utils_save_part (GtkWidget *parent, const char *prompt, CamelMimePart *part) - { -- const char *name; -- GtkWidget *filesel; ++ { + GtkWidget *file_chooser; + const gchar *filename; + gchar *uri = NULL; - -- name = camel_mime_part_get_filename(part); -- if (name == NULL) { -- if (CAMEL_IS_MIME_MESSAGE(part)) { -- name = camel_mime_message_get_subject((CamelMimeMessage *)part); -- if (name == NULL) -- name = _("message"); -- } else { -- name = _("attachment"); -- } ++ + filename = emu_save_get_filename_for_part (part); + + file_chooser = e_file_get_save_filesel ( @@ -78,12 +67,8 @@ + if (!e_file_can_save (GTK_WINDOW (file_chooser), uri)) { + g_warning ("Unable to save %s", uri); + goto exit; - } - -- filesel = e_file_get_save_filesel(parent, prompt, name, GTK_FILE_CHOOSER_ACTION_SAVE); -- camel_object_ref(part); -- g_signal_connect (filesel, "response", G_CALLBACK (emu_save_part_response), part); -- gtk_widget_show (filesel); ++ } ++ + e_file_update_save_path ( + gtk_file_chooser_get_current_folder_uri ( + GTK_FILE_CHOOSER (file_chooser)), TRUE); @@ -93,17 +78,45 @@ +exit: + gtk_widget_destroy (file_chooser); + g_free (uri); - } - --static void --emu_save_parts_response (GtkWidget *filesel, int response, GSList *parts) ++ } ++ +void +em_utils_save_parts (GtkWidget *parent, const gchar *prompt, GSList *parts) { +- const char *name; +- GtkWidget *filesel; ++ GtkWidget *file_chooser; ++ gchar *path_uri; ++ GSList *iter; + +- name = camel_mime_part_get_filename(part); +- if (name == NULL) { +- if (CAMEL_IS_MIME_MESSAGE(part)) { +- name = camel_mime_message_get_subject((CamelMimeMessage *)part); +- if (name == NULL) +- name = _("message"); +- } else { +- name = _("attachment"); +- } +- } ++ file_chooser = e_file_get_save_filesel ( ++ parent, prompt, NULL, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); + +- filesel = e_file_get_save_filesel(parent, prompt, name, GTK_FILE_CHOOSER_ACTION_SAVE); +- camel_object_ref(part); +- g_signal_connect (filesel, "response", G_CALLBACK (emu_save_part_response), part); +- gtk_widget_show (filesel); +-} ++ if (gtk_dialog_run (GTK_DIALOG (file_chooser)) != GTK_RESPONSE_OK) ++ goto exit; + +-static void +-emu_save_parts_response (GtkWidget *filesel, int response, GSList *parts) +-{ - GSList *selected; - char *uri = NULL; - if (response == GTK_RESPONSE_OK) { -- uri = gtk_file_chooser_get_current_folder_uri(GTK_FILE_CHOOSER (filesel)); +- uri = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER (filesel)); - e_file_update_save_path(uri, FALSE); - - for ( selected = parts; selected != NULL; selected = selected->next) { @@ -132,30 +145,20 @@ - mail_save_part(part, file_path, NULL, NULL, FALSE); - else - g_warning ("Could not save %s. File already exists", file_path); -+ GtkWidget *file_chooser; -+ gchar *path_uri; -+ GSList *iter; -+ -+ file_chooser = e_file_get_save_filesel ( -+ parent, prompt, NULL, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); -+ -+ if (gtk_dialog_run (GTK_DIALOG (file_chooser)) != GTK_RESPONSE_OK) -+ goto exit; -+ + path_uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (file_chooser)); + + e_file_update_save_path (path_uri, FALSE); - -- g_free (file_path); -- g_free (safe_name); -- } ++ + for (iter = parts; iter != NULL; iter = iter->next) { + CamelMimePart *part = iter->data; + const gchar *filename; + gchar *uri; -+ + +- g_free (file_path); +- g_free (safe_name); +- } + filename = emu_save_get_filename_for_part (part); -+ + + uri = g_build_path ("/", path_uri, filename, NULL); + + /* XXX Would be nice to mention _why_ we can't save. */ @@ -163,31 +166,23 @@ + mail_save_part (part, uri, NULL, NULL, FALSE); + else + g_warning ("Unable to save %s", uri); - ++ g_free (uri); - } - - g_slist_free (parts); - gtk_widget_destroy((GtkWidget *)filesel); --} + } - --void --em_utils_save_parts (GtkWidget *parent, const char *prompt, GSList * parts) --{ -- GtkWidget *filesel; ++ + g_free (path_uri); - -- filesel = e_file_get_save_filesel (parent, prompt, NULL, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); -- g_signal_connect (filesel, "response", G_CALLBACK (emu_save_parts_response), parts); -- gtk_widget_show (filesel); ++ +exit: + gtk_widget_destroy (file_chooser); } - ---- evolution-2.10.1/mail/em-format-html-display.c.saving-attachments 2007-04-14 14:25:40.000000000 -0400 -+++ evolution-2.10.1/mail/em-format-html-display.c 2007-04-14 15:08:50.000000000 -0400 + void +--- evolution-2.10.2/mail/em-format-html-display.c.saving-attachments 2007-05-28 23:24:04.000000000 -0400 ++++ evolution-2.10.2/mail/em-format-html-display.c 2007-05-28 23:24:05.000000000 -0400 @@ -2099,12 +2099,24 @@ } diff --git a/evolution-2.7.92-fix-prgname.patch b/evolution-2.7.92-fix-prgname.patch deleted file mode 100644 index 98689f4..0000000 --- a/evolution-2.7.92-fix-prgname.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- evolution-2.7.92/shell/main.c.fix-prgname 2006-08-28 11:04:44.000000000 -0400 -+++ evolution-2.7.92/shell/main.c 2006-08-28 11:04:56.000000000 -0400 -@@ -516,7 +516,7 @@ - - g_option_context_add_main_entries (context, options, GETTEXT_PACKAGE); - -- program = gnome_program_init (PACKAGE "-" BASE_VERSION, VERSION, LIBGNOMEUI_MODULE, argc, argv, -+ program = gnome_program_init (PACKAGE, VERSION, LIBGNOMEUI_MODULE, argc, argv, - GNOME_PROGRAM_STANDARD_PROPERTIES, - GNOME_PARAM_GOPTION_CONTEXT, context, - GNOME_PARAM_HUMAN_READABLE_NAME, _("Evolution"), diff --git a/evolution.spec b/evolution.spec index 982738c..6af782c 100644 --- a/evolution.spec +++ b/evolution.spec @@ -46,8 +46,8 @@ ### Abstract ### Name: evolution -Version: 2.10.1 -Release: 17%{?dist} +Version: 2.10.2 +Release: 1%{?dist} License: GPL Group: Applications/Productivity Summary: GNOME's next-generation groupware suite @@ -101,9 +101,6 @@ Patch23: evolution-2.7.3-replicated-cjk-input.patch # RH bug #178295 / GNOME bug #348638 Patch24: evolution-2.7.4-deleting-preedit-buffer.patch -# RH bug #202289 -Patch25: evolution-2.7.92-fix-prgname.patch - # RH bug #161885 / GNOME bug #309166 Patch26: evolution-2.8.0-indic-cursor-movement.patch @@ -158,9 +155,6 @@ Patch46: evolution-2.10.0-use-glib-i18n.patch # GNOME bug #418971 Patch47: evolution-2.10.0-drop-old-glib-support.patch -# RH bug #235878 / GNOME bug #386503 -Patch48: evolution-2.10.1-fix-help.patch - # RH bug #234315 / GNOME bug #423766 Patch49: evolution-2.10.1-saving-attachments.patch @@ -170,9 +164,6 @@ Patch50: evolution-2.10.1-fix-uri-handling.patch # RH bug #236399 / GNOME bug #434019 Patch51: evolution-2.10.1-en_CA-attribution-format.patch -# RH bug #238551 / GNOME bug #434981 -Patch52: evolution-2.10.1-e-attachment-bar.patch - # RH bug #238155 / GNOME bug #427232 Patch53: evolution-2.10.1-check-uri-before-strcmp.patch @@ -312,7 +303,6 @@ Development files needed for building things which link against evolution. %patch22 -p1 -b .filter-datespec %patch23 -p1 -b .replicated-cjk-input %patch24 -p1 -b .deleting-preedit-buffer -%patch25 -p1 -b .fix-prgname %patch26 -p1 -b .indic-cursor-movement %patch29 -p1 -b .fix-indic-printing %patch31 -p1 -b .kill-ethread @@ -331,11 +321,9 @@ Development files needed for building things which link against evolution. %patch45 -p1 -b .shell-main-cleanups %patch46 -p1 -b .use-glib-i18n %patch47 -p1 -b .drop-old-glib-support -%patch48 -p1 -b .fix-help %patch49 -p1 -b .saving-attachments %patch50 -p1 -b .fix-uri-handling %patch51 -p1 -b .en_CA-attribution-format -%patch52 -p1 -b .e-attachment-bar %patch53 -p1 -b .check-uri-before-strcmp %patch54 -p1 -b .send-recv-dialog @@ -759,6 +747,12 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/evolution/%{evo_major}/libmenus.so %changelog +* Mon May 28 2007 Matthew Barnes - 2.10.2-1.fc7 +- Update to 2.10.2 +- Remove patch for RH bug #202289 (fixed upstream). +- Remove patch for RH bug #235878 (fixed upstream). +- Remove patch for RH bug #238551 (fixed upstream). + * Wed May 16 2007 Matthew Barnes - 2.10.1-17.fc7 - Revise patch for GNOME bug #362638 to fix RH bug #237206 (certificate prompt causes crash, again). diff --git a/sources b/sources index 5f86cfa..838573d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -16051c6cbb617cb04665e402566e0976 evolution-2.10.1.tar.bz2 +4b495be7f5e146ce7b5807134586336e evolution-2.10.2.tar.bz2 From 0df3889337557dba7b305040241a72368f6575ac Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Tue, 29 May 2007 05:29:07 +0000 Subject: [PATCH 03/19] - Fix misapplied patch. --- evolution-2.10.1-saving-attachments.patch | 113 ++++++++++++---------- 1 file changed, 61 insertions(+), 52 deletions(-) diff --git a/evolution-2.10.1-saving-attachments.patch b/evolution-2.10.1-saving-attachments.patch index d47764a..e52dc6a 100644 --- a/evolution-2.10.1-saving-attachments.patch +++ b/evolution-2.10.1-saving-attachments.patch @@ -1,5 +1,5 @@ ---- evolution-2.10.2/mail/em-utils.c.saving-attachments 2007-05-28 23:24:04.000000000 -0400 -+++ evolution-2.10.2/mail/em-utils.c 2007-05-28 23:26:18.000000000 -0400 +--- evolution-2.10.2/mail/em-utils.c.saving-attachments 2007-05-29 00:07:55.000000000 -0400 ++++ evolution-2.10.2/mail/em-utils.c 2007-05-29 01:26:46.000000000 -0400 @@ -354,28 +354,23 @@ /* Saving messages... */ @@ -42,52 +42,20 @@ } /** -@@ -387,73 +382,78 @@ +@@ -387,85 +382,79 @@ * Saves a mime part to disk (prompting the user for filename). **/ void -em_utils_save_part(GtkWidget *parent, const char *prompt, CamelMimePart *part) +em_utils_save_part (GtkWidget *parent, const char *prompt, CamelMimePart *part) -+ { + { +- const char *name; +- GtkWidget *filesel; + GtkWidget *file_chooser; + const gchar *filename; + gchar *uri = NULL; + + filename = emu_save_get_filename_for_part (part); -+ -+ file_chooser = e_file_get_save_filesel ( -+ parent, prompt, filename, GTK_FILE_CHOOSER_ACTION_SAVE); -+ -+ if (gtk_dialog_run (GTK_DIALOG (file_chooser)) != GTK_RESPONSE_OK) -+ goto exit; -+ -+ uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (file_chooser)); -+ -+ /* XXX Would be nice to mention _why_ we can't save. */ -+ if (!e_file_can_save (GTK_WINDOW (file_chooser), uri)) { -+ g_warning ("Unable to save %s", uri); -+ goto exit; -+ } -+ -+ e_file_update_save_path ( -+ gtk_file_chooser_get_current_folder_uri ( -+ GTK_FILE_CHOOSER (file_chooser)), TRUE); -+ -+ mail_save_part (part, uri, NULL, NULL, FALSE); -+ -+exit: -+ gtk_widget_destroy (file_chooser); -+ g_free (uri); -+ } -+ -+void -+em_utils_save_parts (GtkWidget *parent, const gchar *prompt, GSList *parts) - { -- const char *name; -- GtkWidget *filesel; -+ GtkWidget *file_chooser; -+ gchar *path_uri; -+ GSList *iter; - name = camel_mime_part_get_filename(part); - if (name == NULL) { @@ -100,7 +68,7 @@ - } - } + file_chooser = e_file_get_save_filesel ( -+ parent, prompt, NULL, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); ++ parent, prompt, filename, GTK_FILE_CHOOSER_ACTION_SAVE); - filesel = e_file_get_save_filesel(parent, prompt, name, GTK_FILE_CHOOSER_ACTION_SAVE); - camel_object_ref(part); @@ -145,6 +113,53 @@ - mail_save_part(part, file_path, NULL, NULL, FALSE); - else - g_warning ("Could not save %s. File already exists", file_path); ++ uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (file_chooser)); ++ ++ /* XXX Would be nice to mention _why_ we can't save. */ ++ if (!e_file_can_save (GTK_WINDOW (file_chooser), uri)) { ++ g_warning ("Unable to save %s", uri); ++ goto exit; ++ } ++ ++ e_file_update_save_path ( ++ gtk_file_chooser_get_current_folder_uri ( ++ GTK_FILE_CHOOSER (file_chooser)), TRUE); + +- g_free (file_path); +- g_free (safe_name); +- } ++ mail_save_part (part, uri, NULL, NULL, FALSE); + +- g_free (uri); +- } +- +- g_slist_free (parts); +- gtk_widget_destroy((GtkWidget *)filesel); ++exit: ++ gtk_widget_destroy (file_chooser); ++ g_free (uri); + } +- ++ + void +-em_utils_save_parts (GtkWidget *parent, const char *prompt, GSList * parts) ++em_utils_save_parts (GtkWidget *parent, const gchar *prompt, GSList *parts) + { +- GtkWidget *filesel; ++ GtkWidget *file_chooser; ++ gchar *path_uri; ++ GSList *iter; + +- filesel = e_file_get_save_filesel (parent, prompt, NULL, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); +- g_signal_connect (filesel, "response", G_CALLBACK (emu_save_parts_response), parts); +- gtk_widget_show (filesel); +-} ++ file_chooser = e_file_get_save_filesel ( ++ parent, prompt, NULL, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); ++ ++ if (gtk_dialog_run (GTK_DIALOG (file_chooser)) != GTK_RESPONSE_OK) ++ goto exit; ++ + path_uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (file_chooser)); + + e_file_update_save_path (path_uri, FALSE); @@ -153,10 +168,7 @@ + CamelMimePart *part = iter->data; + const gchar *filename; + gchar *uri; - -- g_free (file_path); -- g_free (safe_name); -- } ++ + filename = emu_save_get_filename_for_part (part); + uri = g_build_path ("/", path_uri, filename, NULL); @@ -167,22 +179,19 @@ + else + g_warning ("Unable to save %s", uri); + - g_free (uri); -- } -- -- g_slist_free (parts); -- gtk_widget_destroy((GtkWidget *)filesel); ++ g_free (uri); + } + + g_free (path_uri); + +exit: + gtk_widget_destroy (file_chooser); - } ++} - void ---- evolution-2.10.2/mail/em-format-html-display.c.saving-attachments 2007-05-28 23:24:04.000000000 -0400 -+++ evolution-2.10.2/mail/em-format-html-display.c 2007-05-28 23:24:05.000000000 -0400 + /** + * em_utils_save_part_to_file: +--- evolution-2.10.2/mail/em-format-html-display.c.saving-attachments 2007-05-29 00:07:55.000000000 -0400 ++++ evolution-2.10.2/mail/em-format-html-display.c 2007-05-29 00:07:55.000000000 -0400 @@ -2099,12 +2099,24 @@ } From 283a9297146beed25d56eb2f5a78420b34bc6429 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Wed, 6 Jun 2007 17:32:14 +0000 Subject: [PATCH 04/19] - Revise patch for GNOME bug #362638 to fix RH bug #240507 (hang on exit). --- evolution-2.8.1-kill-ethread.patch | 1088 +++++++++++++++------------- evolution.spec | 5 +- 2 files changed, 603 insertions(+), 490 deletions(-) diff --git a/evolution-2.8.1-kill-ethread.patch b/evolution-2.8.1-kill-ethread.patch index 1300292..8ae43ed 100644 --- a/evolution-2.8.1-kill-ethread.patch +++ b/evolution-2.8.1-kill-ethread.patch @@ -1,6 +1,6 @@ ---- evolution-2.10.1/mail/mail-send-recv.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/mail-send-recv.c 2007-05-16 16:17:38.000000000 -0400 -@@ -725,23 +725,22 @@ +--- evolution-2.10.2/mail/mail-send-recv.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.2/mail/mail-send-recv.c 2007-06-06 13:02:25.000000000 -0400 +@@ -725,23 +725,22 @@ receive_get_folder(CamelFilterDriver *d, /* ********************************************************************** */ struct _refresh_folders_msg { @@ -28,7 +28,7 @@ int i; CamelFolder *folder; -@@ -757,17 +756,14 @@ +@@ -757,17 +756,14 @@ refresh_folders_get (struct _mail_msg *m } static void @@ -48,7 +48,7 @@ int i; for (i=0;ifolders->len;i++) -@@ -776,11 +772,12 @@ +@@ -776,11 +772,12 @@ refresh_folders_free (struct _mail_msg * camel_object_unref(m->store); } @@ -66,7 +66,7 @@ }; static void -@@ -813,13 +810,13 @@ +@@ -813,13 +810,13 @@ receive_update_got_folderinfo(CamelStore get_folders(store, folders, info); @@ -82,9 +82,9 @@ } else { receive_done ("", data); } ---- evolution-2.10.1/mail/mail-component.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/mail-component.c 2007-05-16 16:17:38.000000000 -0400 -@@ -965,7 +965,7 @@ +--- evolution-2.10.2/mail/mail-component.c.kill-ethread 2007-05-27 15:55:12.000000000 -0400 ++++ evolution-2.10.2/mail/mail-component.c 2007-06-06 13:02:25.000000000 -0400 +@@ -982,7 +982,7 @@ impl_handleURI (PortableServer_Servant s if (camel_url_get_param(url, "uid") != NULL) { char *curi = em_uri_to_camel(uri); @@ -93,8 +93,8 @@ g_free(curi); } else { g_warning("email uri's must include a uid parameter"); ---- evolution-2.10.1/mail/mail-ops.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/mail-ops.c 2007-05-16 16:19:33.000000000 -0400 +--- evolution-2.10.2/mail/mail-ops.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.2/mail/mail-ops.c 2007-06-06 13:05:53.000000000 -0400 @@ -75,7 +75,7 @@ /* used for both just filtering a folder + uid's, and for filtering a whole folder */ /* used both for fetching mail, and for filtering mail */ @@ -104,7 +104,7 @@ CamelFolder *source_folder; /* where they come from */ GPtrArray *source_uids; /* uids to copy, or NULL == copy all */ -@@ -99,8 +99,8 @@ +@@ -99,8 +99,8 @@ struct _fetch_mail_msg { void *data; }; @@ -115,7 +115,7 @@ { return g_strdup (_("Filtering Selected Messages")); } -@@ -108,9 +108,8 @@ +@@ -108,9 +108,8 @@ em_filter_folder_element_describe (struc /* filter a folder, or a subset thereof, uses source_folder/source_uids */ /* this is shared with fetch_mail */ static void @@ -126,7 +126,7 @@ CamelFolder *folder; GPtrArray *uids, *folder_uids = NULL; -@@ -137,15 +136,15 @@ +@@ -137,15 +136,15 @@ em_filter_folder_element_filter (struct else folder_uids = uids = camel_folder_get_uids (folder); @@ -145,7 +145,7 @@ camel_folder_thaw (folder); if (m->destination) -@@ -161,15 +160,13 @@ +@@ -161,15 +160,13 @@ em_filter_folder_element_filter (struct } static void @@ -163,7 +163,7 @@ if (m->source_folder) camel_object_unref (m->source_folder); -@@ -188,11 +185,12 @@ +@@ -188,11 +185,12 @@ em_filter_folder_element_free (struct _m mail_session_flush_filter_log (); } @@ -181,7 +181,7 @@ }; void -@@ -202,7 +200,7 @@ +@@ -202,7 +200,7 @@ mail_filter_folder (CamelFolder *source_ { struct _filter_mail_msg *m; @@ -190,7 +190,7 @@ m->source_folder = source_folder; camel_object_ref (source_folder); m->source_uids = uids; -@@ -221,7 +219,7 @@ +@@ -221,7 +219,7 @@ mail_filter_folder (CamelFolder *source_ camel_filter_driver_remove_rule_by_name (m->driver, "new-mail-notification"); } @@ -199,7 +199,7 @@ } /* convenience functions for it */ -@@ -260,17 +258,16 @@ +@@ -260,17 +258,16 @@ uid_cachename_hack (CamelStore *store) return filename; } @@ -221,7 +221,7 @@ int i; if (m->cancel) -@@ -283,20 +280,20 @@ +@@ -283,20 +280,20 @@ fetch_mail_fetch (struct _mail_msg *mm) /* FIXME: this should support keep_on_server too, which would then perform a spool access thingy, right? problem is matching raw messages to uid's etc. */ if (!strncmp (m->source_uri, "mbox:", 5)) { @@ -247,7 +247,7 @@ if (folder) { /* this handles 'keep on server' stuff, if we have any new uid's to copy -@@ -322,17 +319,17 @@ +@@ -322,17 +319,17 @@ fetch_mail_fetch (struct _mail_msg *mm) camel_uid_cache_free_uids (cache_uids); fm->cache = cache; @@ -268,7 +268,7 @@ /* not keep on server - just delete all the actual messages on the server */ for (i=0;ilen;i++) { d(printf("force delete uid '%s'\n", (char *)folder_uids->pdata[i])); -@@ -348,7 +345,7 @@ +@@ -348,7 +345,7 @@ fetch_mail_fetch (struct _mail_msg *mm) camel_uid_cache_destroy (cache); camel_folder_free_uids (folder, folder_uids); } else { @@ -277,7 +277,7 @@ } /* we unref the source folder here since we -@@ -372,31 +369,28 @@ +@@ -372,31 +369,28 @@ fail: } static void @@ -318,7 +318,7 @@ }; /* ouch, a 'do everything' interface ... */ -@@ -409,7 +403,7 @@ +@@ -409,7 +403,7 @@ mail_fetch_mail (const char *source, int struct _fetch_mail_msg *m; struct _filter_mail_msg *fm; @@ -327,7 +327,7 @@ fm = (struct _filter_mail_msg *)m; m->source_uri = g_strdup (source); fm->delete = !keep; -@@ -426,7 +420,7 @@ +@@ -426,7 +420,7 @@ mail_fetch_mail (const char *source, int if (status) camel_filter_driver_set_status_func (fm->driver, status, status_data); @@ -336,7 +336,7 @@ } /* ********************************************************************** */ -@@ -657,7 +651,7 @@ +@@ -657,7 +651,7 @@ exit: /* ** SEND MAIL QUEUE ***************************************************** */ struct _send_queue_msg { @@ -345,7 +345,7 @@ CamelFolder *queue; char *destination; -@@ -689,9 +683,8 @@ +@@ -689,9 +683,8 @@ report_status (struct _send_queue_msg *m } static void @@ -356,7 +356,7 @@ CamelFolder *sent_folder = mail_component_get_folder(NULL, MAIL_COMPONENT_FOLDER_SENT); GPtrArray *uids, *send_uids = NULL; CamelException ex; -@@ -739,17 +732,17 @@ +@@ -739,17 +732,17 @@ send_queue_send(struct _mail_msg *mm) if (camel_exception_is_set (&ex)) { if (ex.id != CAMEL_EXCEPTION_USER_CANCEL) { /* merge exceptions into one */ @@ -378,7 +378,7 @@ break; } } -@@ -759,7 +752,7 @@ +@@ -759,7 +752,7 @@ send_queue_send(struct _mail_msg *mm) if (j > 0) report_status (m, CAMEL_FILTER_STATUS_END, 100, _("Failed to send %d of %d messages"), j, send_uids->len); @@ -387,7 +387,7 @@ report_status (m, CAMEL_FILTER_STATUS_END, 100, _("Canceled.")); else report_status (m, CAMEL_FILTER_STATUS_END, 100, _("Complete.")); -@@ -785,19 +778,15 @@ +@@ -785,19 +778,15 @@ send_queue_send(struct _mail_msg *mm) } static void @@ -409,7 +409,7 @@ if (m->driver) camel_object_unref(m->driver); camel_object_unref(m->queue); -@@ -806,11 +795,12 @@ +@@ -806,11 +795,12 @@ send_queue_free(struct _mail_msg *mm) camel_operation_unref(m->cancel); } @@ -427,7 +427,7 @@ }; /* same interface as fetch_mail, just 'cause i'm lazy today (and we need to run it from the same spot?) */ -@@ -823,7 +813,7 @@ +@@ -823,7 +813,7 @@ mail_send_queue(CamelFolder *queue, cons { struct _send_queue_msg *m; @@ -436,7 +436,7 @@ m->queue = queue; camel_object_ref(queue); m->destination = g_strdup(destination); -@@ -839,13 +829,13 @@ +@@ -839,13 +829,13 @@ mail_send_queue(CamelFolder *queue, cons m->driver = camel_session_get_filter_driver (session, type, NULL); camel_filter_driver_set_folder_func (m->driver, get_folder, get_data); @@ -452,7 +452,7 @@ CamelFolder *folder; CamelMimeMessage *message; -@@ -856,45 +846,40 @@ +@@ -856,45 +846,40 @@ struct _append_msg { void *data; }; @@ -511,7 +511,7 @@ }; void -@@ -911,7 +896,7 @@ +@@ -911,7 +896,7 @@ mail_append_mail (CamelFolder *folder, C camel_medium_set_header (CAMEL_MEDIUM (message), "X-Mailer", "Evolution " VERSION SUB_VERSION " " VERSION_COMMENT); @@ -520,7 +520,7 @@ m->folder = folder; camel_object_ref(folder); m->message = message; -@@ -921,13 +906,13 @@ +@@ -921,13 +906,13 @@ mail_append_mail (CamelFolder *folder, C m->done = done; m->data = data; @@ -536,7 +536,7 @@ CamelFolder *source; GPtrArray *uids; -@@ -939,24 +924,21 @@ +@@ -939,24 +924,21 @@ struct _transfer_msg { void *data; }; @@ -566,7 +566,7 @@ return; if (dest == m->source) { -@@ -968,7 +950,7 @@ +@@ -968,7 +950,7 @@ transfer_messages_transfer (struct _mail camel_folder_freeze (m->source); camel_folder_freeze (dest); @@ -575,7 +575,7 @@ /* make sure all deleted messages are marked as seen */ -@@ -987,29 +969,26 @@ +@@ -987,29 +969,26 @@ transfer_messages_transfer (struct _mail } static void @@ -614,7 +614,7 @@ }; void -@@ -1026,7 +1005,7 @@ +@@ -1026,7 +1005,7 @@ mail_transfer_messages (CamelFolder *sou g_assert(uids != NULL); g_assert(dest_uri != NULL); @@ -623,7 +623,7 @@ m->source = source; camel_object_ref (source); m->uids = uids; -@@ -1036,13 +1015,13 @@ +@@ -1036,13 +1015,13 @@ mail_transfer_messages (CamelFolder *sou m->done = done; m->data = data; @@ -639,7 +639,7 @@ CamelStore *store; CamelFolderInfo *info; -@@ -1050,10 +1029,9 @@ +@@ -1050,10 +1029,9 @@ struct _get_folderinfo_msg { void *data; }; @@ -652,7 +652,7 @@ char *ret, *name; name = camel_service_get_name((CamelService *)m->store, TRUE); -@@ -1063,25 +1041,22 @@ +@@ -1063,25 +1041,22 @@ get_folderinfo_desc (struct _mail_msg *m } static void @@ -683,7 +683,7 @@ g_free (url); } -@@ -1090,20 +1065,19 @@ +@@ -1090,20 +1065,19 @@ get_folderinfo_got (struct _mail_msg *mm } static void @@ -711,7 +711,7 @@ }; int -@@ -1112,19 +1086,19 @@ +@@ -1112,19 +1086,19 @@ mail_get_folderinfo (CamelStore *store, struct _get_folderinfo_msg *m; int id; @@ -736,7 +736,7 @@ return id; } -@@ -1196,7 +1170,7 @@ +@@ -1196,7 +1170,7 @@ mail_build_attachment(CamelFolder *folde presumably create a folder ... */ struct _get_folder_msg { @@ -745,7 +745,7 @@ char *uri; guint32 flags; -@@ -1205,71 +1179,64 @@ +@@ -1205,71 +1179,64 @@ struct _get_folder_msg { void *data; }; @@ -834,7 +834,7 @@ char *uri; CamelStore *store; -@@ -1277,50 +1244,43 @@ +@@ -1277,50 +1244,43 @@ struct _get_store_msg { void *data; }; @@ -897,7 +897,7 @@ }; int -@@ -1329,25 +1289,25 @@ +@@ -1329,25 +1289,25 @@ mail_get_store (const char *uri, CamelOp struct _get_store_msg *m; int id; @@ -929,7 +929,7 @@ char *uri; gboolean removed; -@@ -1355,18 +1315,15 @@ +@@ -1355,18 +1315,15 @@ struct _remove_folder_msg { void *data; }; @@ -951,7 +951,7 @@ CamelStore *store; CamelFolder *folder; GPtrArray *uids; -@@ -1374,7 +1331,7 @@ +@@ -1374,7 +1331,7 @@ remove_folder_get (struct _mail_msg *mm) m->removed = FALSE; @@ -960,7 +960,7 @@ if (!folder) return; -@@ -1394,16 +1351,14 @@ +@@ -1394,16 +1351,14 @@ remove_folder_get (struct _mail_msg *mm) camel_store_unsubscribe_folder (store, folder->full_name, NULL); /* Then delete the folder from the store */ @@ -980,7 +980,7 @@ if (m->removed) { /* FIXME: Remove this folder from the folder cache ??? */ } -@@ -1413,18 +1368,17 @@ +@@ -1413,18 +1368,17 @@ remove_folder_got (struct _mail_msg *mm) } static void @@ -1006,7 +1006,7 @@ }; void -@@ -1432,59 +1386,56 @@ +@@ -1432,59 +1386,56 @@ mail_remove_folder (const char *uri, voi { struct _remove_folder_msg *m; @@ -1084,7 +1084,7 @@ }; void -@@ -1492,19 +1443,19 @@ +@@ -1492,19 +1443,19 @@ mail_sync_folder(CamelFolder *folder, vo { struct _sync_folder_msg *m; @@ -1107,7 +1107,7 @@ CamelStore *store; int expunge; -@@ -1512,9 +1463,9 @@ +@@ -1512,9 +1463,9 @@ struct _sync_store_msg { void *data; }; @@ -1119,7 +1119,7 @@ char *uri, *res; uri = camel_url_to_string(((CamelService *)m->store)->url, CAMEL_URL_HIDE_ALL); -@@ -1527,33 +1478,31 @@ +@@ -1527,33 +1478,31 @@ static char *sync_store_desc(struct _mai return res; } @@ -1166,7 +1166,7 @@ }; void -@@ -1561,36 +1510,37 @@ +@@ -1561,36 +1510,37 @@ mail_sync_store(CamelStore *store, int e { struct _sync_store_msg *m; @@ -1216,7 +1216,7 @@ }; void -@@ -1598,35 +1548,36 @@ +@@ -1598,35 +1548,36 @@ mail_refresh_folder(CamelFolder *folder, { struct _sync_folder_msg *m; @@ -1265,7 +1265,7 @@ }; void -@@ -1634,31 +1585,30 @@ +@@ -1634,31 +1585,30 @@ mail_expunge_folder(CamelFolder *folder, { struct _sync_folder_msg *m; @@ -1302,7 +1302,7 @@ return g_strdup_printf (_("Emptying trash in \'%s\'"), m->account ? m->account->name : _("Local Folders")); #else -@@ -1666,49 +1616,48 @@ +@@ -1666,49 +1616,48 @@ static char *empty_trash_desc(struct _ma #endif } @@ -1367,7 +1367,7 @@ }; void -@@ -1716,20 +1665,20 @@ +@@ -1716,20 +1665,20 @@ mail_empty_trash(EAccount *account, void { struct _empty_trash_msg *m; @@ -1391,7 +1391,7 @@ CamelFolder *folder; char *uid; -@@ -1739,32 +1688,28 @@ +@@ -1739,32 +1688,28 @@ struct _get_message_msg { CamelOperation *cancel; }; @@ -1433,7 +1433,7 @@ g_free (m->uid); camel_object_unref (m->folder); camel_operation_unref (m->cancel); -@@ -1773,21 +1718,22 @@ +@@ -1773,21 +1718,22 @@ static void get_message_free(struct _mai camel_object_unref (m->message); } @@ -1463,7 +1463,7 @@ m->folder = folder; camel_object_ref(folder); m->uid = g_strdup(uid); -@@ -1795,37 +1741,37 @@ +@@ -1795,37 +1741,37 @@ mail_get_message(CamelFolder *folder, co m->done = done; m->cancel = camel_operation_new(NULL, NULL); @@ -1513,7 +1513,7 @@ m->folder = folder; camel_object_ref(folder); m->uid = g_strdup(uid); -@@ -1833,13 +1779,13 @@ +@@ -1833,13 +1779,13 @@ mail_get_messagex(CamelFolder *folder, c m->done = done; m->cancel = camel_operation_new(NULL, NULL); @@ -1529,7 +1529,7 @@ CamelFolder *folder; GPtrArray *uids; -@@ -1849,26 +1795,25 @@ +@@ -1849,26 +1795,25 @@ struct _get_messages_msg { void *data; }; @@ -1562,7 +1562,7 @@ if (message == NULL) break; -@@ -1876,17 +1821,16 @@ +@@ -1876,17 +1821,16 @@ static void get_messages_get(struct _mai } } @@ -1584,7 +1584,7 @@ int i; em_utils_uids_free (m->uids); -@@ -1898,11 +1842,12 @@ +@@ -1898,11 +1842,12 @@ static void get_messages_free(struct _ma camel_object_unref(m->folder); } @@ -1602,7 +1602,7 @@ }; void -@@ -1912,7 +1857,7 @@ +@@ -1912,7 +1857,7 @@ mail_get_messages(CamelFolder *folder, G { struct _get_messages_msg *m; @@ -1611,7 +1611,7 @@ m->folder = folder; camel_object_ref(folder); m->uids = uids; -@@ -1920,13 +1865,13 @@ +@@ -1920,13 +1865,13 @@ mail_get_messages(CamelFolder *folder, G m->data = data; m->done = done; @@ -1627,7 +1627,7 @@ CamelFolder *folder; GPtrArray *uids; -@@ -1935,10 +1880,9 @@ +@@ -1935,10 +1880,9 @@ struct _save_messages_msg { void *data; }; @@ -1640,7 +1640,7 @@ return g_strdup_printf(ngettext("Saving %d message", "Saving %d messsages", m->uids->len), m->uids->len); -@@ -1977,9 +1921,8 @@ +@@ -1977,9 +1921,8 @@ save_prepare_part (CamelMimePart *mime_p } static void @@ -1651,7 +1651,7 @@ CamelStreamFilter *filtered_stream; CamelMimeFilterFrom *from_filter; CamelStream *stream; -@@ -1996,8 +1939,8 @@ +@@ -1996,8 +1939,8 @@ save_messages_save (struct _mail_msg *mm CamelMimeMessage *message; int pc = ((i+1) * 100) / m->uids->len; @@ -1662,7 +1662,7 @@ if (message == NULL) break; -@@ -2009,7 +1952,7 @@ +@@ -2009,7 +1952,7 @@ save_messages_save (struct _mail_msg *mm || camel_stream_flush(stream) == -1 || camel_data_wrapper_write_to_stream((CamelDataWrapper *)message, (CamelStream *)filtered_stream) == -1 || camel_stream_flush((CamelStream *)filtered_stream) == -1) { @@ -1671,7 +1671,7 @@ _("Error saving messages to: %s:\n %s"), m->path, strerror(errno)); g_free(from); camel_object_unref((CamelObject *)message); -@@ -2023,28 +1966,27 @@ +@@ -2023,28 +1966,27 @@ save_messages_save (struct _mail_msg *mm camel_object_unref(stream); } @@ -1710,7 +1710,7 @@ }; int -@@ -2054,7 +1996,7 @@ +@@ -2054,7 +1996,7 @@ mail_save_messages(CamelFolder *folder, struct _save_messages_msg *m; int id; @@ -1719,7 +1719,7 @@ m->folder = folder; camel_object_ref(folder); m->uids = uids; -@@ -2062,8 +2004,8 @@ +@@ -2062,8 +2004,8 @@ mail_save_messages(CamelFolder *folder, m->data = data; m->done = done; @@ -1730,7 +1730,7 @@ return id; } -@@ -2071,7 +2013,7 @@ +@@ -2071,7 +2013,7 @@ mail_save_messages(CamelFolder *folder, /* ** SAVE PART ******************************************************* */ struct _save_part_msg { @@ -1739,7 +1739,7 @@ CamelMimePart *part; char *path; -@@ -2080,27 +2022,27 @@ +@@ -2080,27 +2022,27 @@ struct _save_part_msg { gboolean readonly; }; @@ -1772,7 +1772,7 @@ _("Cannot create output file: %s:\n %s"), m->path, g_strerror (errno)); return; -@@ -2110,7 +2052,7 @@ +@@ -2110,7 +2052,7 @@ save_part_save (struct _mail_msg *mm) if (camel_data_wrapper_decode_to_stream (content, stream) == -1 || camel_stream_flush (stream) == -1) @@ -1781,7 +1781,7 @@ _("Could not write data: %s"), g_strerror (errno)); -@@ -2118,27 +2060,25 @@ +@@ -2118,27 +2060,25 @@ save_part_save (struct _mail_msg *mm) } static void @@ -1818,7 +1818,7 @@ }; int -@@ -2147,7 +2087,7 @@ +@@ -2147,7 +2087,7 @@ mail_save_part (CamelMimePart *part, con { struct _save_part_msg *m; int id; @@ -1827,7 +1827,7 @@ m->part = part; camel_object_ref (part); m->path = g_strdup (path); -@@ -2155,8 +2095,8 @@ +@@ -2155,8 +2095,8 @@ mail_save_part (CamelMimePart *part, con m->done = done; m->readonly = readonly; @@ -1838,7 +1838,7 @@ return id; } -@@ -2165,7 +2105,7 @@ +@@ -2165,7 +2105,7 @@ mail_save_part (CamelMimePart *part, con /* ** PREPARE OFFLINE ***************************************************** */ struct _prep_offline_msg { @@ -1847,7 +1847,7 @@ CamelOperation *cancel; char *uri; -@@ -2173,22 +2113,22 @@ +@@ -2173,22 +2113,22 @@ struct _prep_offline_msg { void *data; }; @@ -1875,7 +1875,7 @@ } /* prepare_for_offline should do this? */ /* of course it should all be atomic, but ... */ -@@ -2200,28 +2140,27 @@ +@@ -2200,28 +2140,27 @@ static void prep_offline_do(struct _mail camel_operation_unregister(m->cancel); } @@ -1914,7 +1914,7 @@ }; void -@@ -2232,7 +2171,7 @@ +@@ -2232,7 +2171,7 @@ mail_prep_offline(const char *uri, { struct _prep_offline_msg *m; @@ -1923,7 +1923,7 @@ m->cancel = cancel; if (cancel) camel_operation_ref(cancel); -@@ -2240,13 +2179,13 @@ +@@ -2240,13 +2179,13 @@ mail_prep_offline(const char *uri, m->data = data; m->done = done; @@ -1939,7 +1939,7 @@ CamelStore *store; gboolean offline; -@@ -2254,9 +2193,9 @@ +@@ -2254,9 +2193,9 @@ struct _set_offline_msg { void *data; }; @@ -1951,7 +1951,7 @@ char *service_name = camel_service_get_name (CAMEL_SERVICE (m->store), TRUE); char *msg; -@@ -2266,61 +2205,59 @@ +@@ -2266,61 +2205,59 @@ static char *set_offline_desc(struct _ma return msg; } @@ -2030,7 +2030,7 @@ }; int -@@ -2337,15 +2274,15 @@ +@@ -2337,15 +2274,15 @@ mail_store_set_offline (CamelStore *stor if (offline) camel_service_cancel_connect (CAMEL_SERVICE (store)); @@ -2049,7 +2049,7 @@ return id; } -@@ -2363,7 +2300,7 @@ +@@ -2363,7 +2300,7 @@ mail_execute_shell_command (CamelFilterD /* Async service-checking/authtype-lookup code. */ struct _check_msg { @@ -2058,7 +2058,7 @@ char *url; CamelProviderType type; -@@ -2373,51 +2310,47 @@ +@@ -2373,51 +2310,47 @@ struct _check_msg { void *data; }; @@ -2124,7 +2124,7 @@ }; int -@@ -2426,14 +2359,14 @@ +@@ -2426,14 +2359,14 @@ mail_check_service(const char *url, Came struct _check_msg *m; int id; @@ -2142,9 +2142,9 @@ return id; } ---- evolution-2.10.1/mail/em-folder-utils.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/em-folder-utils.c 2007-05-16 16:17:38.000000000 -0400 -@@ -84,7 +84,7 @@ +--- evolution-2.10.2/mail/em-folder-utils.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.2/mail/em-folder-utils.c 2007-06-06 13:02:25.000000000 -0400 +@@ -84,7 +84,7 @@ emfu_is_special_local_folder (const char } struct _EMCopyFolders { @@ -2153,7 +2153,7 @@ /* input data */ CamelStore *fromstore; -@@ -96,18 +96,15 @@ +@@ -96,18 +96,15 @@ struct _EMCopyFolders { int delete; }; @@ -2175,7 +2175,7 @@ guint32 flags = CAMEL_STORE_FOLDER_INFO_FAST | CAMEL_STORE_FOLDER_INFO_RECURSIVE | CAMEL_STORE_FOLDER_INFO_SUBSCRIBED; GList *pending = NULL, *deleting = NULL, *l; GString *fromname, *toname; -@@ -115,7 +112,7 @@ +@@ -115,7 +112,7 @@ emft_copy_folders__copy (struct _mail_ms const char *tmp; int fromlen; @@ -2184,7 +2184,7 @@ return; pending = g_list_append (pending, fi); -@@ -155,8 +152,8 @@ +@@ -155,8 +152,8 @@ emft_copy_folders__copy (struct _mail_ms if ((info->flags & CAMEL_FOLDER_NOSELECT) == 0) { d(printf ("this folder is selectable\n")); if (m->tostore == m->fromstore && m->delete) { @@ -2195,7 +2195,7 @@ goto exception; /* this folder no longer exists, unsubscribe it */ -@@ -165,16 +162,16 @@ +@@ -165,16 +162,16 @@ emft_copy_folders__copy (struct _mail_ms deleted = 1; } else { @@ -2215,7 +2215,7 @@ camel_folder_free_uids (fromfolder, uids); if (m->delete) -@@ -185,7 +182,7 @@ +@@ -185,7 +182,7 @@ emft_copy_folders__copy (struct _mail_ms } } @@ -2224,7 +2224,7 @@ goto exception; else if (m->delete && !deleted) deleting = g_list_prepend (deleting, info); -@@ -226,10 +223,8 @@ +@@ -226,10 +223,8 @@ emft_copy_folders__copy (struct _mail_ms } static void @@ -2236,7 +2236,7 @@ camel_object_unref (m->fromstore); camel_object_unref (m->tostore); -@@ -237,11 +232,12 @@ +@@ -237,11 +232,12 @@ emft_copy_folders__free (struct _mail_ms g_free (m->tobase); } @@ -2254,7 +2254,7 @@ }; int -@@ -250,7 +246,7 @@ +@@ -250,7 +246,7 @@ em_folder_utils_copy_folders(CamelStore struct _EMCopyFolders *m; int seq; @@ -2263,7 +2263,7 @@ camel_object_ref (fromstore); m->fromstore = fromstore; camel_object_ref (tostore); -@@ -258,9 +254,9 @@ +@@ -258,9 +254,9 @@ em_folder_utils_copy_folders(CamelStore m->frombase = g_strdup (frombase); m->tobase = g_strdup (tobase); m->delete = delete; @@ -2275,7 +2275,7 @@ return seq; } -@@ -557,7 +553,7 @@ +@@ -557,7 +553,7 @@ em_folder_utils_rename_folder (CamelFold } struct _EMCreateFolder { @@ -2284,7 +2284,7 @@ /* input data */ CamelStore *store; -@@ -573,41 +569,33 @@ +@@ -573,41 +569,33 @@ struct _EMCreateFolder { void *user_data; }; @@ -2333,7 +2333,7 @@ camel_store_free_folder_info (m->store, m->fi); camel_object_unref (m->store); g_free (m->full_name); -@@ -615,11 +603,12 @@ +@@ -615,11 +603,12 @@ emfu_create_folder__free (struct _mail_m g_free (m->name); } @@ -2351,7 +2351,7 @@ }; -@@ -640,7 +629,7 @@ +@@ -640,7 +629,7 @@ emfu_create_folder_real (CamelStore *sto parent = namebuf; } @@ -2360,7 +2360,7 @@ camel_object_ref (store); m->store = store; m->full_name = g_strdup (full_name); -@@ -651,8 +640,8 @@ +@@ -651,8 +640,8 @@ emfu_create_folder_real (CamelStore *sto g_free (namebuf); @@ -2371,8 +2371,8 @@ return id; } ---- evolution-2.10.1/mail/importers/elm-importer.c.kill-ethread 2007-04-09 09:09:26.000000000 -0400 -+++ evolution-2.10.1/mail/importers/elm-importer.c 2007-05-16 16:17:38.000000000 -0400 +--- evolution-2.10.2/mail/importers/elm-importer.c.kill-ethread 2007-04-09 09:09:26.000000000 -0400 ++++ evolution-2.10.2/mail/importers/elm-importer.c 2007-06-06 13:02:25.000000000 -0400 @@ -51,7 +51,7 @@ #define d(x) x @@ -2382,7 +2382,7 @@ EImport *import; EImportTargetHome *target; -@@ -186,8 +186,8 @@ +@@ -186,8 +186,8 @@ elm_supported(EImport *ei, EImportTarget return mailexists; } @@ -2393,7 +2393,7 @@ { return g_strdup (_("Importing Elm data")); } -@@ -198,9 +198,8 @@ +@@ -198,9 +198,8 @@ static MailImporterSpecial elm_special_f }; static void @@ -2404,7 +2404,7 @@ const char *maildir; char *elmdir; -@@ -218,13 +217,11 @@ +@@ -218,13 +217,11 @@ elm_import_import(struct _mail_msg *mm) } static void @@ -2420,7 +2420,7 @@ GConfClient *gconf; gconf = gconf_client_get_default(); -@@ -236,10 +233,8 @@ +@@ -236,10 +233,8 @@ elm_import_imported(struct _mail_msg *mm } static void @@ -2432,7 +2432,7 @@ camel_operation_unref(m->status); g_free(m->status_what); -@@ -288,11 +283,12 @@ +@@ -288,11 +283,12 @@ elm_status_timeout(void *data) return TRUE; } @@ -2450,7 +2450,7 @@ }; static int -@@ -301,7 +297,7 @@ +@@ -301,7 +297,7 @@ mail_importer_elm_import(EImport *ei, EI struct _elm_import_msg *m; int id; @@ -2459,7 +2459,7 @@ g_datalist_set_data(&target->data, "elm-msg", m); m->import = ei; g_object_ref(m->import); -@@ -310,9 +306,9 @@ +@@ -310,9 +306,9 @@ mail_importer_elm_import(EImport *ei, EI m->status_lock = g_mutex_new(); m->status = camel_operation_new(elm_status, m); @@ -2471,9 +2471,9 @@ return id; } ---- evolution-2.10.1/mail/importers/mail-importer.c.kill-ethread 2007-04-09 09:09:26.000000000 -0400 -+++ evolution-2.10.1/mail/importers/mail-importer.c 2007-05-16 16:17:38.000000000 -0400 -@@ -132,7 +132,7 @@ +--- evolution-2.10.2/mail/importers/mail-importer.c.kill-ethread 2007-04-09 09:09:26.000000000 -0400 ++++ evolution-2.10.2/mail/importers/mail-importer.c 2007-06-06 13:02:25.000000000 -0400 +@@ -132,7 +132,7 @@ struct _BonoboObject *mail_importer_fact } struct _import_mbox_msg { @@ -2482,7 +2482,7 @@ char *path; char *uri; -@@ -142,8 +142,8 @@ +@@ -142,8 +142,8 @@ struct _import_mbox_msg { void *done_data; }; @@ -2493,7 +2493,7 @@ { return g_strdup (_("Importing mailbox")); } -@@ -190,9 +190,8 @@ +@@ -190,9 +190,8 @@ decode_mozilla_status(const char *tmp) } static void @@ -2504,7 +2504,7 @@ CamelFolder *folder; CamelMimeParser *mp = NULL; struct stat st; -@@ -207,7 +206,7 @@ +@@ -207,7 +206,7 @@ import_mbox_import(struct _mail_msg *mm) if (m->uri == NULL || m->uri[0] == 0) folder = mail_component_get_folder(NULL, MAIL_COMPONENT_FOLDER_INBOX); else @@ -2513,7 +2513,7 @@ if (folder == NULL) return; -@@ -262,11 +261,11 @@ +@@ -262,11 +261,11 @@ import_mbox_import(struct _mail_msg *mm) flags |= decode_status(tmp); camel_message_info_set_flags(info, flags, ~0); @@ -2527,7 +2527,7 @@ break; camel_mime_parser_step(mp, 0, 0); -@@ -286,30 +285,27 @@ +@@ -286,30 +285,27 @@ fail1: } static void @@ -2567,7 +2567,7 @@ }; int -@@ -318,7 +314,7 @@ +@@ -318,7 +314,7 @@ mail_importer_import_mbox(const char *pa struct _import_mbox_msg *m; int id; @@ -2576,7 +2576,7 @@ m->path = g_strdup(path); m->uri = g_strdup(folderuri); m->done = done; -@@ -328,8 +324,8 @@ +@@ -328,8 +324,8 @@ mail_importer_import_mbox(const char *pa camel_operation_ref(cancel); } @@ -2587,7 +2587,7 @@ return id; } -@@ -339,7 +335,7 @@ +@@ -339,7 +335,7 @@ mail_importer_import_mbox_sync(const cha { struct _import_mbox_msg *m; @@ -2596,7 +2596,7 @@ m->path = g_strdup(path); m->uri = g_strdup(folderuri); if (cancel) { -@@ -347,9 +343,9 @@ +@@ -347,9 +343,9 @@ mail_importer_import_mbox_sync(const cha camel_operation_ref(cancel); } @@ -2609,8 +2609,8 @@ } struct _import_folders_data { ---- evolution-2.10.1/mail/importers/pine-importer.c.kill-ethread 2007-04-09 09:09:26.000000000 -0400 -+++ evolution-2.10.1/mail/importers/pine-importer.c 2007-05-16 16:17:38.000000000 -0400 +--- evolution-2.10.2/mail/importers/pine-importer.c.kill-ethread 2007-04-09 09:09:26.000000000 -0400 ++++ evolution-2.10.2/mail/importers/pine-importer.c 2007-06-06 13:02:25.000000000 -0400 @@ -56,7 +56,7 @@ #define d(x) x @@ -2620,7 +2620,7 @@ EImport *import; EImportTarget *target; -@@ -223,8 +223,8 @@ +@@ -223,8 +223,8 @@ import_contacts(void) g_object_unref(book); } @@ -2631,7 +2631,7 @@ { return g_strdup (_("Importing Pine data")); } -@@ -236,10 +236,8 @@ +@@ -236,10 +236,8 @@ static MailImporterSpecial pine_special_ }; static void @@ -2643,7 +2643,7 @@ if (GPOINTER_TO_INT(g_datalist_get_data(&m->target->data, "pine-do-addr"))) import_contacts(); -@@ -253,13 +251,11 @@ +@@ -253,13 +251,11 @@ pine_import_import(struct _mail_msg *mm) } static void @@ -2659,7 +2659,7 @@ GConfClient *gconf; gconf = gconf_client_get_default(); -@@ -274,10 +270,8 @@ +@@ -274,10 +270,8 @@ pine_import_imported(struct _mail_msg *m } static void @@ -2671,7 +2671,7 @@ camel_operation_unref(m->status); g_free(m->status_what); -@@ -326,11 +320,12 @@ +@@ -326,11 +320,12 @@ pine_status_timeout(void *data) return TRUE; } @@ -2689,7 +2689,7 @@ }; static int -@@ -339,7 +334,7 @@ +@@ -339,7 +334,7 @@ mail_importer_pine_import(EImport *ei, E struct _pine_import_msg *m; int id; @@ -2698,7 +2698,7 @@ g_datalist_set_data(&target->data, "pine-msg", m); m->import = ei; g_object_ref(m->import); -@@ -348,9 +343,9 @@ +@@ -348,9 +343,9 @@ mail_importer_pine_import(EImport *ei, E m->status_lock = g_mutex_new(); m->status = camel_operation_new(pine_status, m); @@ -2710,8 +2710,19 @@ return id; } ---- evolution-2.10.1/mail/mail-vfolder.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/mail-vfolder.c 2007-05-16 16:17:38.000000000 -0400 +--- evolution-2.10.2/mail/em-utils.c.kill-ethread 2007-06-06 12:57:49.000000000 -0400 ++++ evolution-2.10.2/mail/em-utils.c 2007-06-06 13:02:25.000000000 -0400 +@@ -1915,7 +1915,7 @@ em_utils_in_addressbook(CamelInternetAdd + ESource *source = s->data; + GList *contacts; + EBook *book; +- void *hook; ++ GHook *hook; + + d(printf(" checking '%s'\n", e_source_get_uri(source))); + +--- evolution-2.10.2/mail/mail-vfolder.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.2/mail/mail-vfolder.c 2007-06-06 13:02:25.000000000 -0400 @@ -21,7 +21,7 @@ */ @@ -2721,7 +2732,7 @@ #include #include -@@ -75,7 +75,7 @@ +@@ -75,7 +75,7 @@ static void rule_changed(FilterRule *rul /* ********************************************************************** */ struct _setup_msg { @@ -2730,7 +2741,7 @@ CamelFolder *folder; char *query; -@@ -83,18 +83,15 @@ +@@ -83,18 +83,15 @@ struct _setup_msg { GList *sources_folder; }; @@ -2752,7 +2763,7 @@ GList *l, *list = NULL; CamelFolder *folder; -@@ -105,12 +102,12 @@ +@@ -105,12 +102,12 @@ vfolder_setup_do(struct _mail_msg *mm) l = m->sources_uri; while (l && !shutdown) { d(printf(" Adding uri: %s\n", (char *)l->data)); @@ -2767,7 +2778,7 @@ } l = l->next; } -@@ -135,17 +132,13 @@ +@@ -135,17 +132,13 @@ vfolder_setup_do(struct _mail_msg *mm) } static void @@ -2787,7 +2798,7 @@ GList *l; camel_object_unref(m->folder); -@@ -166,11 +159,12 @@ +@@ -166,11 +159,12 @@ vfolder_setup_free (struct _mail_msg *mm g_list_free(m->sources_folder); } @@ -2805,7 +2816,7 @@ }; /* sources_uri should be camel uri's */ -@@ -180,15 +174,15 @@ +@@ -180,15 +174,15 @@ vfolder_setup(CamelFolder *folder, const struct _setup_msg *m; int id; @@ -2824,7 +2835,7 @@ return id; } -@@ -196,17 +190,16 @@ +@@ -196,17 +190,16 @@ vfolder_setup(CamelFolder *folder, const /* ********************************************************************** */ struct _adduri_msg { @@ -2845,7 +2856,7 @@ char *euri, *desc = NULL; /* Yuck yuck. Lookup the account name and use that to describe the path */ -@@ -250,9 +243,8 @@ +@@ -250,9 +243,8 @@ vfolder_adduri_desc(struct _mail_msg *mm } static void @@ -2856,7 +2867,7 @@ GList *l; CamelFolder *folder = NULL; -@@ -269,7 +261,7 @@ +@@ -269,7 +261,7 @@ vfolder_adduri_do(struct _mail_msg *mm) } if (folder == NULL) @@ -2865,7 +2876,7 @@ if (folder != NULL) { l = m->folders; -@@ -285,28 +277,24 @@ +@@ -285,28 +277,24 @@ vfolder_adduri_do(struct _mail_msg *mm) } static void @@ -2902,7 +2913,7 @@ }; -@@ -317,13 +305,13 @@ +@@ -317,13 +305,13 @@ vfolder_adduri(const char *uri, GList *f struct _adduri_msg *m; int id; @@ -2919,7 +2930,7 @@ return id; } -@@ -447,7 +435,7 @@ +@@ -447,7 +435,7 @@ mail_vfolder_add_uri(CamelStore *store, return; } @@ -2928,7 +2939,7 @@ is_ignore = uri_is_ignore(store, curi); -@@ -540,7 +528,7 @@ +@@ -540,7 +528,7 @@ mail_vfolder_delete_uri(CamelStore *stor d(printf ("Deleting uri to check: %s\n", uri)); @@ -2937,7 +2948,7 @@ changed = g_string_new (""); -@@ -615,7 +603,7 @@ +@@ -615,7 +603,7 @@ mail_vfolder_rename_uri(CamelStore *stor if (context == NULL || uri_is_spethal(store, cfrom) || uri_is_spethal(store, cto)) return; @@ -2946,9 +2957,9 @@ from = em_uri_from_camel(cfrom); to = em_uri_from_camel(cto); ---- evolution-2.10.1/mail/em-format-html.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/em-format-html.c 2007-05-16 16:17:38.000000000 -0400 -@@ -166,7 +166,7 @@ +--- evolution-2.10.2/mail/em-format-html.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.2/mail/em-format-html.c 2007-06-06 13:02:25.000000000 -0400 +@@ -166,7 +166,7 @@ efh_gtkhtml_destroy(GtkHTML *html, EMFor if (efh->priv->format_timeout_id != 0) { g_source_remove(efh->priv->format_timeout_id); efh->priv->format_timeout_id = 0; @@ -2957,7 +2968,7 @@ efh->priv->format_timeout_msg = NULL; } -@@ -1180,7 +1180,7 @@ +@@ -1180,7 +1180,7 @@ efh_builtin_init(EMFormatHTMLClass *efhc /* Sigh, this is so we have a cancellable, async rendering thread */ struct _format_msg { @@ -2966,7 +2977,7 @@ EMFormatHTML *format; EMFormat *format_source; -@@ -1190,14 +1190,15 @@ +@@ -1190,14 +1190,15 @@ struct _format_msg { CamelMimeMessage *message; }; @@ -2985,7 +2996,7 @@ struct _EMFormatHTMLJob *job; struct _EMFormatPURITree *puri_level; int cancelled = FALSE; -@@ -1282,10 +1283,9 @@ +@@ -1282,10 +1283,9 @@ static void efh_format_do(struct _mail_m ((EMFormat *)m->format)->pending_uri_level = puri_level; } @@ -2998,7 +3009,7 @@ d(printf("formatting finished\n")); m->format->load_http_now = FALSE; -@@ -1293,10 +1293,9 @@ +@@ -1293,10 +1293,9 @@ static void efh_format_done(struct _mail g_signal_emit_by_name(m->format, "complete"); } @@ -3011,7 +3022,7 @@ d(printf("formatter freed\n")); g_object_unref(m->format); if (m->estream) { -@@ -1312,11 +1311,12 @@ +@@ -1312,11 +1311,12 @@ static void efh_format_free(struct _mail g_object_unref(m->format_source); } @@ -3029,7 +3040,7 @@ }; static gboolean -@@ -1327,7 +1327,7 @@ +@@ -1327,7 +1327,7 @@ efh_format_timeout(struct _format_msg *m struct _EMFormatHTMLPrivate *p = efh->priv; if (m->format->html == NULL) { @@ -3038,7 +3049,7 @@ return FALSE; } -@@ -1355,7 +1355,7 @@ +@@ -1355,7 +1355,7 @@ efh_format_timeout(struct _format_msg *m if (m->message == NULL) { hstream = gtk_html_begin(efh->html); gtk_html_stream_close(hstream, GTK_HTML_STREAM_OK); @@ -3047,7 +3058,7 @@ p->last_part = NULL; } else { hstream = NULL; -@@ -1374,8 +1374,8 @@ +@@ -1374,8 +1374,8 @@ efh_format_timeout(struct _format_msg *m p->last_part = m->message; } @@ -3058,7 +3069,7 @@ } efh->priv->format_timeout_id = 0; -@@ -1399,11 +1399,11 @@ +@@ -1399,11 +1399,11 @@ static void efh_format_clone(EMFormat *e d(printf(" timeout for last still active, removing ...\n")); g_source_remove(efh->priv->format_timeout_id); efh->priv->format_timeout_id = 0; @@ -3072,9 +3083,9 @@ m->format = (EMFormatHTML *)emf; g_object_ref(emf); m->format_source = emfsource; ---- evolution-2.10.1/mail/em-folder-properties.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/em-folder-properties.c 2007-05-16 16:17:38.000000000 -0400 -@@ -386,7 +386,7 @@ +--- evolution-2.10.2/mail/em-folder-properties.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.2/mail/em-folder-properties.c 2007-06-06 13:02:25.000000000 -0400 +@@ -386,7 +386,7 @@ em_folder_properties_show(GtkWindow *par } if (folder == NULL) @@ -3083,9 +3094,9 @@ else emfp_dialog_got_folder((char *)uri, folder, NULL); } ---- evolution-2.10.1/mail/em-folder-tree.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/em-folder-tree.c 2007-05-16 16:17:38.000000000 -0400 -@@ -834,7 +834,7 @@ +--- evolution-2.10.2/mail/em-folder-tree.c.kill-ethread 2007-05-28 09:06:42.000000000 -0400 ++++ evolution-2.10.2/mail/em-folder-tree.c 2007-06-06 13:04:25.000000000 -0400 +@@ -834,7 +834,7 @@ fail: /* TODO: Merge the drop handling code/menu's into one spot using a popup target for details */ /* Drop handling */ struct _DragDataReceivedAsync { @@ -3094,7 +3105,7 @@ /* input data */ GdkDragContext *context; -@@ -859,17 +859,16 @@ +@@ -859,7 +859,7 @@ emft_drop_folder(struct _DragDataReceive d(printf(" * Drop folder '%s' onto '%s'\n", m->selection->data, m->full_name)); @@ -3103,19 +3114,18 @@ return; em_folder_utils_copy_folders(src->parent_store, src->full_name, m->store, m->full_name?m->full_name:"", m->move); - camel_object_unref(src); +@@ -867,9 +867,8 @@ emft_drop_folder(struct _DragDataReceive } --static char * + static char * -emft_drop_async_desc (struct _mail_msg *mm, int done) -+static gchar * +emft_drop_async__desc (struct _DragDataReceivedAsync *m) { - struct _DragDataReceivedAsync *m = (struct _DragDataReceivedAsync *) mm; CamelURL *url; char *buf; -@@ -893,9 +892,8 @@ +@@ -893,9 +892,8 @@ emft_drop_async_desc (struct _mail_msg * } static void @@ -3126,7 +3136,7 @@ CamelFolder *folder; /* for types other than folder, we can't drop to the root path */ -@@ -903,14 +901,14 @@ +@@ -903,14 +901,14 @@ emft_drop_async_drop (struct _mail_msg * /* copy or move (aka rename) a folder */ emft_drop_folder(m); } else if (m->full_name == NULL) { @@ -3145,7 +3155,7 @@ break; case DND_DROP_TYPE_MESSAGE_RFC822: /* import a message/rfc822 stream */ -@@ -928,9 +926,8 @@ +@@ -928,9 +926,8 @@ emft_drop_async_drop (struct _mail_msg * } static void @@ -3156,7 +3166,7 @@ gboolean success, delete; /* ?? */ -@@ -938,7 +935,7 @@ +@@ -938,7 +935,7 @@ emft_drop_async_done (struct _mail_msg * success = FALSE; delete = FALSE; } else { @@ -3165,7 +3175,7 @@ delete = success && m->move && !m->moved; } -@@ -946,10 +943,8 @@ +@@ -946,10 +943,8 @@ emft_drop_async_done (struct _mail_msg * } static void @@ -3177,7 +3187,7 @@ g_object_unref(m->context); camel_object_unref(m->store); g_free(m->full_name); -@@ -958,18 +953,19 @@ +@@ -958,18 +953,19 @@ emft_drop_async_free (struct _mail_msg * g_free(m->selection); } @@ -3203,7 +3213,7 @@ } static void -@@ -996,7 +992,7 @@ +@@ -996,7 +992,7 @@ emft_drop_popup_cancel(EPopup *ep, EPopu struct _DragDataReceivedAsync *m = data; m->aborted = TRUE; @@ -3212,7 +3222,7 @@ } static EPopupItem emft_drop_popup_menu[] = { -@@ -1052,7 +1048,7 @@ +@@ -1052,7 +1048,7 @@ tree_drag_data_received(GtkWidget *widge return; } @@ -3221,7 +3231,7 @@ m->context = context; g_object_ref(context); m->store = store; -@@ -1686,7 +1682,7 @@ +@@ -1686,7 +1682,7 @@ dump_fi (CamelFolderInfo *fi, int depth) #endif struct _EMFolderTreeGetFolderInfo { @@ -3230,7 +3240,7 @@ /* input data */ GtkTreeRowReference *root; -@@ -1699,10 +1695,9 @@ +@@ -1699,10 +1695,9 @@ struct _EMFolderTreeGetFolderInfo { CamelFolderInfo *fi; }; @@ -3243,7 +3253,7 @@ char *ret, *name; name = camel_service_get_name((CamelService *)m->store, TRUE); -@@ -1712,18 +1707,16 @@ +@@ -1712,18 +1707,16 @@ emft_get_folder_info__desc(struct _mail_ } static void @@ -3265,7 +3275,7 @@ struct _EMFolderTreePrivate *priv = m->emft->priv; struct _EMFolderTreeModelStoreInfo *si; GtkTreeIter root, iter; -@@ -1751,7 +1744,7 @@ +@@ -1751,7 +1744,7 @@ emft_get_folder_info__got (struct _mail_ gtk_tree_model_get_iter ((GtkTreeModel *) model, &root, path); /* if we had an error, then we need to re-set the load subdirs state and collapse the node */ @@ -3274,7 +3284,7 @@ gtk_tree_store_set(model, &root, COL_BOOL_LOAD_SUBDIRS, TRUE, -1); gtk_tree_view_collapse_row (priv->treeview, path); gtk_tree_path_free (path); -@@ -1806,10 +1799,8 @@ +@@ -1806,10 +1799,8 @@ emft_get_folder_info__got (struct _mail_ } static void @@ -3286,7 +3296,7 @@ camel_store_free_folder_info (m->store, m->fi); gtk_tree_row_reference_free (m->root); -@@ -1818,11 +1809,12 @@ +@@ -1818,11 +1809,12 @@ emft_get_folder_info__free (struct _mail g_free (m->top); } @@ -3304,7 +3314,7 @@ }; static void -@@ -1906,7 +1898,7 @@ +@@ -1906,7 +1898,7 @@ emft_tree_row_expanded (GtkTreeView *tre gtk_tree_store_set((GtkTreeStore *)model, root, COL_BOOL_LOAD_SUBDIRS, FALSE, -1); @@ -3313,7 +3323,7 @@ m->root = gtk_tree_row_reference_new (model, tree_path); camel_object_ref (store); m->store = store; -@@ -1915,7 +1907,7 @@ +@@ -1915,7 +1907,7 @@ emft_tree_row_expanded (GtkTreeView *tre m->top = full_name; m->flags = CAMEL_STORE_FOLDER_INFO_RECURSIVE|CAMEL_STORE_FOLDER_INFO_FAST; @@ -3322,9 +3332,9 @@ } static gboolean ---- evolution-2.10.1/mail/em-folder-browser.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/em-folder-browser.c 2007-05-16 16:17:38.000000000 -0400 -@@ -838,7 +838,7 @@ +--- evolution-2.10.2/mail/em-folder-browser.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.2/mail/em-folder-browser.c 2007-06-06 13:02:25.000000000 -0400 +@@ -838,7 +838,7 @@ get_view_query (ESearchBar *esb) struct _setup_msg { @@ -3333,7 +3343,7 @@ CamelFolder *folder; char *query; -@@ -846,16 +846,15 @@ +@@ -846,16 +846,15 @@ struct _setup_msg { GList *sources_folder; }; @@ -3353,7 +3363,7 @@ GList *l, *list = NULL; CamelFolder *folder; -@@ -866,12 +865,12 @@ +@@ -866,12 +865,12 @@ vfolder_setup_do(struct _mail_msg *mm) l = m->sources_uri; while (l) { d(printf(" Adding uri: %s\n", (char *)l->data)); @@ -3368,7 +3378,7 @@ } l = l->next; } -@@ -895,17 +894,13 @@ +@@ -895,17 +894,13 @@ vfolder_setup_do(struct _mail_msg *mm) } static void @@ -3388,7 +3398,7 @@ GList *l; camel_object_unref(m->folder); -@@ -926,11 +921,12 @@ +@@ -926,11 +921,12 @@ vfolder_setup_free (struct _mail_msg *mm g_list_free(m->sources_folder); } @@ -3406,7 +3416,7 @@ }; /* sources_uri should be camel uri's */ -@@ -940,15 +936,15 @@ +@@ -940,15 +936,15 @@ vfolder_setup(CamelFolder *folder, const struct _setup_msg *m; int id; @@ -3425,9 +3435,9 @@ return id; } ---- evolution-2.10.1/mail/message-list.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/message-list.c 2007-05-16 16:17:38.000000000 -0400 -@@ -1802,7 +1802,7 @@ +--- evolution-2.10.2/mail/message-list.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.2/mail/message-list.c 2007-06-06 13:02:25.000000000 -0400 +@@ -1802,7 +1802,7 @@ ml_tree_drag_data_get (ETree *tree, int /* TODO: merge this with the folder tree stuff via empopup targets */ /* Drop handling */ struct _drop_msg { @@ -3436,7 +3446,7 @@ GdkDragContext *context; -@@ -1819,11 +1819,9 @@ +@@ -1819,11 +1819,9 @@ struct _drop_msg { unsigned int aborted:1; }; @@ -3450,7 +3460,7 @@ if (m->move) return g_strdup_printf(_("Moving messages into folder %s"), m->folder->full_name); else -@@ -1831,13 +1829,11 @@ +@@ -1831,13 +1829,11 @@ ml_drop_async_desc (struct _mail_msg *mm } static void @@ -3466,7 +3476,7 @@ break; case DND_MESSAGE_RFC822: em_utils_selection_get_message(m->selection, m->folder); -@@ -1849,9 +1845,8 @@ +@@ -1849,9 +1845,8 @@ ml_drop_async_drop(struct _mail_msg *mm) } static void @@ -3477,7 +3487,7 @@ gboolean success, delete; /* ?? */ -@@ -1859,7 +1854,7 @@ +@@ -1859,7 +1854,7 @@ ml_drop_async_done(struct _mail_msg *mm) success = FALSE; delete = FALSE; } else { @@ -3486,7 +3496,7 @@ delete = success && m->move && !m->moved; } -@@ -1867,10 +1862,8 @@ +@@ -1867,10 +1862,8 @@ ml_drop_async_done(struct _mail_msg *mm) } static void @@ -3498,7 +3508,7 @@ g_object_unref(m->context); camel_object_unref(m->folder); -@@ -1878,18 +1871,19 @@ +@@ -1878,18 +1871,19 @@ ml_drop_async_free(struct _mail_msg *mm) g_free(m->selection); } @@ -3524,7 +3534,7 @@ } static void -@@ -1916,7 +1910,7 @@ +@@ -1916,7 +1910,7 @@ ml_drop_popup_cancel(EPopup *ep, EPopupI struct _drop_msg *m = data; m->aborted = TRUE; @@ -3533,7 +3543,7 @@ } static EPopupItem ml_drop_popup_menu[] = { -@@ -1946,7 +1940,7 @@ +@@ -1946,7 +1940,7 @@ ml_tree_drag_data_received (ETree *tree, if (data->data == NULL || data->length == -1) return; @@ -3542,7 +3552,7 @@ m->context = context; g_object_ref(context); m->folder = ml->folder; -@@ -3676,7 +3670,7 @@ +@@ -3676,7 +3670,7 @@ save_hide_state (MessageList *ml) /* ** REGENERATE MESSAGELIST ********************************************** */ struct _regen_list_msg { @@ -3551,7 +3561,7 @@ int complete; -@@ -3704,16 +3698,15 @@ +@@ -3704,16 +3698,15 @@ struct _regen_list_msg { */ @@ -3571,7 +3581,7 @@ GPtrArray *uids, *uidnew, *showuids, *searchuids = NULL; CamelMessageInfo *info; int i; -@@ -3743,7 +3736,7 @@ +@@ -3743,7 +3736,7 @@ regen_list_regen (struct _mail_msg *mm) } else expr = "(match-all (not (system-flag \"deleted\")))"; } @@ -3580,7 +3590,7 @@ } else { char *expr; -@@ -3753,23 +3746,23 @@ +@@ -3753,23 +3746,23 @@ regen_list_regen (struct _mail_msg *mm) sprintf(expr, "(and (match-all (not (system-flag \"junk\")))\n %s)", m->search); } else expr = "(match-all (not (system-flag \"junk\")))"; @@ -3609,7 +3619,7 @@ if (uidnew) { MESSAGE_LIST_LOCK(m->ml, hide_lock); -@@ -3844,7 +3837,7 @@ +@@ -3844,7 +3837,7 @@ regen_list_regen (struct _mail_msg *mm) e_profile_event_emit("list.threaduids", m->folder->full_name, 0); @@ -3618,7 +3628,7 @@ /* update/build a new tree */ if (m->dotree) { if (m->tree) -@@ -3873,17 +3866,15 @@ +@@ -3873,17 +3866,15 @@ regen_list_regen (struct _mail_msg *mm) } static void @@ -3638,7 +3648,7 @@ return; if (m->ml->folder != m->folder) -@@ -3934,9 +3925,8 @@ +@@ -3934,9 +3925,8 @@ regen_list_regened (struct _mail_msg *mm } static void @@ -3649,7 +3659,7 @@ int i; e_profile_event_emit("list.regenerated", m->folder->full_name, 0); -@@ -3964,11 +3954,12 @@ +@@ -3964,11 +3954,12 @@ regen_list_free (struct _mail_msg *mm) g_object_unref(m->ml); } @@ -3667,7 +3677,7 @@ }; static gboolean -@@ -3978,7 +3969,7 @@ +@@ -3978,7 +3969,7 @@ ml_regen_timeout(struct _regen_list_msg m->ml->regen = g_list_prepend(m->ml->regen, m); /* TODO: we should manage our own thread stuff, would make cancelling outstanding stuff easier */ @@ -3676,7 +3686,7 @@ m->ml->regen_timeout_msg = NULL; m->ml->regen_timeout_id = 0; -@@ -3994,7 +3985,7 @@ +@@ -3994,7 +3985,7 @@ mail_regen_cancel(MessageList *ml) GList *l = ml->regen; while (l) { @@ -3685,7 +3695,7 @@ if (mm->cancel) camel_operation_cancel(mm->cancel); -@@ -4006,7 +3997,7 @@ +@@ -4006,7 +3997,7 @@ mail_regen_cancel(MessageList *ml) if (ml->regen_timeout_id) { g_source_remove(ml->regen_timeout_id); ml->regen_timeout_id = 0; @@ -3694,7 +3704,7 @@ ml->regen_timeout_msg = NULL; } } -@@ -4041,7 +4032,7 @@ +@@ -4041,7 +4032,7 @@ mail_regen_list (MessageList *ml, const } #endif @@ -3703,9 +3713,9 @@ m->ml = ml; m->search = g_strdup (search); m->hideexpr = g_strdup (hideexpr); ---- evolution-2.10.1/mail/em-sync-stream.h.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/em-sync-stream.h 2007-05-16 16:17:38.000000000 -0400 -@@ -29,41 +29,45 @@ +--- evolution-2.10.2/mail/em-sync-stream.h.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.2/mail/em-sync-stream.h 2007-06-06 13:02:25.000000000 -0400 +@@ -29,41 +29,45 @@ requests are always handled in the main #ifndef EM_SYNC_STREAM_H #define EM_SYNC_STREAM_H @@ -3781,9 +3791,9 @@ +G_END_DECLS #endif /* EM_SYNC_STREAM_H */ ---- evolution-2.10.1/mail/em-format-html-print.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/em-format-html-print.c 2007-05-16 16:17:38.000000000 -0400 -@@ -262,7 +262,7 @@ +--- evolution-2.10.2/mail/em-format-html-print.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.2/mail/em-format-html-print.c 2007-06-06 13:04:53.000000000 -0400 +@@ -262,7 +262,7 @@ int em_format_html_print_message(EMForma g_object_ref(source); g_object_ref(efhp); @@ -3792,8 +3802,8 @@ return 0; /* damn async ... */ } ---- evolution-2.10.1/mail/em-sync-stream.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/em-sync-stream.c 2007-05-16 16:17:38.000000000 -0400 +--- evolution-2.10.2/mail/em-sync-stream.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.2/mail/em-sync-stream.c 2007-06-06 13:02:25.000000000 -0400 @@ -25,42 +25,17 @@ #include #endif @@ -3841,7 +3851,7 @@ enum _write_msg_t { EMSS_WRITE, EMSS_FLUSH, -@@ -68,275 +43,168 @@ +@@ -68,275 +43,168 @@ enum _write_msg_t { }; struct _write_msg { @@ -4219,9 +4229,9 @@ + g_string_free (emss->buffer, TRUE); + emss->buffer = g_string_sized_new (size); } ---- evolution-2.10.1/mail/em-subscribe-editor.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/em-subscribe-editor.c 2007-05-16 16:17:38.000000000 -0400 -@@ -175,7 +175,7 @@ +--- evolution-2.10.2/mail/em-subscribe-editor.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.2/mail/em-subscribe-editor.c 2007-06-06 13:02:25.000000000 -0400 +@@ -175,7 +175,7 @@ sub_unref(EMSubscribe *sub) /* ** Subscribe folder operation **************************************** */ struct _zsubscribe_msg { @@ -4230,7 +4240,7 @@ EMSubscribe *sub; EMSubscribeNode *node; -@@ -184,20 +184,18 @@ +@@ -184,20 +184,18 @@ struct _zsubscribe_msg { }; static void @@ -4256,7 +4266,7 @@ GtkTreeIter iter; GtkTreeModel *model; EMSubscribeNode *node; -@@ -207,7 +205,7 @@ +@@ -207,7 +205,7 @@ sub_folder_subscribed (struct _mail_msg if (m->sub->cancel) return; @@ -4265,7 +4275,7 @@ if (m->subscribe) m->node->info->flags |= CAMEL_FOLDER_SUBSCRIBED; else -@@ -228,8 +226,8 @@ +@@ -228,8 +226,8 @@ sub_folder_subscribed (struct _mail_msg /* queue any further ones, or if out, update the ui */ next = (struct _zsubscribe_msg *)e_dlist_remhead(&m->sub->subscribe); if (next) { @@ -4276,7 +4286,7 @@ } else { /* should it go off the model instead? */ sub_selection_changed(gtk_tree_view_get_selection(m->sub->tree), m->sub); -@@ -237,19 +235,18 @@ +@@ -237,19 +235,18 @@ sub_folder_subscribed (struct _mail_msg } static void @@ -4303,7 +4313,7 @@ }; /* spath is tree path in string form */ -@@ -259,18 +256,18 @@ +@@ -259,18 +256,18 @@ sub_subscribe_folder (EMSubscribe *sub, struct _zsubscribe_msg *m; int id; @@ -4325,7 +4335,7 @@ } else { d(printf("queueing subscribe folder '%s'\n", spath)); e_dlist_addtail(&sub->subscribe, (EDListNode *)m); -@@ -341,7 +338,7 @@ +@@ -341,7 +338,7 @@ sub_fill_level(EMSubscribe *sub, CamelFo /* async query of folderinfo */ struct _emse_folderinfo_msg { @@ -4334,7 +4344,7 @@ int seq; -@@ -351,31 +348,29 @@ +@@ -351,31 +348,29 @@ struct _emse_folderinfo_msg { }; static void @@ -4373,7 +4383,7 @@ } if (m->info) { -@@ -396,10 +391,8 @@ +@@ -396,10 +391,8 @@ sub_folderinfo_got(struct _mail_msg *mm) } static void @@ -4385,7 +4395,7 @@ if (m->info) m->sub->info_list = g_slist_prepend(m->sub->info_list, m->info); -@@ -415,11 +408,12 @@ +@@ -415,11 +408,12 @@ sub_folderinfo_free(struct _mail_msg *mm sub_unref(m->sub); } @@ -4403,7 +4413,7 @@ }; static int -@@ -431,19 +425,19 @@ +@@ -431,19 +425,19 @@ sub_queue_fill_level(EMSubscribe *sub, E d(printf("%s:%d:%s: Starting get folderinfo of '%s'\n", __FILE__, __LINE__, __GNUC_PRETTY_FUNCTION__, node?node->info->full_name:"")); @@ -4427,7 +4437,7 @@ return id; } -@@ -573,7 +567,7 @@ +@@ -573,7 +567,7 @@ sub_destroy(GtkWidget *w, EMSubscribe *s mail_msg_cancel(sub->subscribe_id); while ( (m = (struct _zsubscribe_msg *)e_dlist_remhead(&sub->subscribe)) ) @@ -4436,9 +4446,9 @@ sub_unref(sub); } ---- evolution-2.10.1/mail/mail-mt.h.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/mail-mt.h 2007-05-16 16:17:38.000000000 -0400 -@@ -23,43 +23,60 @@ +--- evolution-2.10.2/mail/mail-mt.h.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.2/mail/mail-mt.h 2007-06-06 13:02:25.000000000 -0400 +@@ -23,47 +23,64 @@ #ifndef _MAIL_MT #define _MAIL_MT @@ -4515,9 +4525,16 @@ +void mail_msg_slow_ordered_push (gpointer msg); + /* To implement the stop button */ - void *mail_cancel_hook_add(GDestroyNotify func, void *data); - void mail_cancel_hook_remove(void *handle); -@@ -112,24 +129,6 @@ +-void *mail_cancel_hook_add(GDestroyNotify func, void *data); +-void mail_cancel_hook_remove(void *handle); +-void mail_cancel_all(void); ++GHook * mail_cancel_hook_add (GHookFunc func, gpointer data); ++void mail_cancel_hook_remove (GHook *hook); ++void mail_cancel_all (void); + + /* request a string/password */ + char *mail_get_password (CamelService *service, const char *prompt, +@@ -112,24 +129,6 @@ void *mail_call_main(mail_call_t type, M void mail_enable_stop(void); void mail_disable_stop(void); @@ -4542,9 +4559,9 @@ /* A generic proxy event for anything that can be proxied during the life of the mailer (almost nothing) */ /* Note that almost all objects care about the lifecycle of their events, so this cannot be used */ extern MailAsyncEvent *mail_async_event; ---- evolution-2.10.1/mail/mail-ops.h.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/mail-ops.h 2007-05-16 16:17:38.000000000 -0400 -@@ -30,13 +30,14 @@ +--- evolution-2.10.2/mail/mail-ops.h.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.2/mail/mail-ops.h 2007-06-06 13:02:25.000000000 -0400 +@@ -30,13 +30,14 @@ extern "C" { #pragma } #endif /* __cplusplus */ @@ -4560,7 +4577,7 @@ #include "libedataserver/e-account.h" void mail_append_mail (CamelFolder *folder, CamelMimeMessage *message, CamelMessageInfo *info, -@@ -55,12 +56,12 @@ +@@ -55,12 +56,12 @@ void mail_transfer_messages (CamelFolder void mail_get_message (CamelFolder *folder, const char *uid, void (*done) (CamelFolder *folder, const char *uid, CamelMimeMessage *msg, void *data), void *data, @@ -4575,7 +4592,7 @@ /* get several messages */ void mail_get_messages (CamelFolder *folder, GPtrArray *uids, -@@ -70,7 +71,7 @@ +@@ -70,7 +71,7 @@ void mail_get_messages (CamelFolder *fol /* same for a folder */ int mail_get_folder (const char *uri, guint32 flags, void (*done) (char *uri, CamelFolder *folder, void *data), void *data, @@ -4584,9 +4601,9 @@ /* and for a store */ int mail_get_store (const char *uri, CamelOperation *op, ---- evolution-2.10.1/mail/em-composer-utils.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/em-composer-utils.c 2007-05-16 16:17:38.000000000 -0400 -@@ -534,7 +534,7 @@ +--- evolution-2.10.2/mail/em-composer-utils.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.2/mail/em-composer-utils.c 2007-06-06 13:02:25.000000000 -0400 +@@ -534,7 +534,7 @@ em_utils_composer_save_draft_cb (EMsgCom strcmp (account->drafts_folder_uri, default_drafts_folder_uri) != 0) { int id; @@ -4595,7 +4612,7 @@ mail_msg_wait (id); if (!folder || !account->enabled) { -@@ -1085,7 +1085,7 @@ +@@ -1085,7 +1085,7 @@ em_utils_redirect_message_by_uid (CamelF g_return_if_fail (CAMEL_IS_FOLDER (folder)); g_return_if_fail (uid != NULL); @@ -4604,7 +4621,7 @@ } static void -@@ -1116,7 +1116,7 @@ +@@ -1116,7 +1116,7 @@ em_utils_handle_receipt (CamelFolder *fo } if (msg == NULL) { @@ -4613,7 +4630,7 @@ camel_message_info_free(info); return; } -@@ -1916,7 +1916,7 @@ +@@ -1916,7 +1916,7 @@ em_utils_reply_to_message(CamelFolder *f rd->source = source; if (rd->source) g_object_ref(rd->source); @@ -4622,16 +4639,16 @@ return; } -@@ -2088,5 +2088,5 @@ +@@ -2088,5 +2088,5 @@ em_utils_post_reply_to_message_by_uid (C g_return_if_fail (CAMEL_IS_FOLDER (folder)); g_return_if_fail (uid != NULL); - mail_get_message (folder, uid, post_reply_to_message, NULL, mail_thread_new); + mail_get_message (folder, uid, post_reply_to_message, NULL, mail_msg_unordered_push); } ---- evolution-2.10.1/mail/mail-folder-cache.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/mail-folder-cache.c 2007-05-16 16:17:38.000000000 -0400 -@@ -843,15 +843,14 @@ +--- evolution-2.10.2/mail/mail-folder-cache.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.2/mail/mail-folder-cache.c 2007-06-06 13:02:25.000000000 -0400 +@@ -843,15 +843,14 @@ update_folders(CamelStore *store, CamelF struct _ping_store_msg { @@ -4650,7 +4667,7 @@ char *service_name = camel_service_get_name (CAMEL_SERVICE (m->store), TRUE); char *msg; -@@ -862,10 +861,9 @@ +@@ -862,10 +861,9 @@ ping_store_desc (struct _mail_msg *mm, i } static void @@ -4662,7 +4679,7 @@ if (CAMEL_SERVICE (m->store)->status == CAMEL_SERVICE_CONNECTED) { if (CAMEL_IS_DISCO_STORE (m->store) && -@@ -876,22 +874,21 @@ +@@ -876,22 +874,21 @@ ping_store_ping (struct _mail_msg *mm) online = TRUE; } if (online) @@ -4693,7 +4710,7 @@ }; static void -@@ -903,11 +900,11 @@ +@@ -903,11 +900,11 @@ ping_store (gpointer key, gpointer val, if (CAMEL_SERVICE (store)->status != CAMEL_SERVICE_CONNECTED) return; @@ -4707,7 +4724,7 @@ } static gboolean -@@ -952,7 +949,7 @@ +@@ -952,7 +949,7 @@ mail_note_store(CamelStore *store, Camel int hook = 0; g_assert(CAMEL_IS_STORE(store)); @@ -4716,8 +4733,8 @@ LOCK(info_lock); ---- evolution-2.10.1/mail/em-folder-view.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/em-folder-view.c 2007-05-16 16:17:38.000000000 -0400 +--- evolution-2.10.2/mail/em-folder-view.c.kill-ethread 2007-05-28 01:09:15.000000000 -0400 ++++ evolution-2.10.2/mail/em-folder-view.c 2007-06-06 13:03:17.000000000 -0400 @@ -68,6 +68,7 @@ #include @@ -4726,7 +4743,7 @@ #include "menus/gal-view-etable.h" #include "menus/gal-view-factory-etable.h" -@@ -693,7 +694,7 @@ +@@ -693,7 +694,7 @@ emfv_got_folder(char *uri, CamelFolder * static void emfv_set_folder_uri(EMFolderView *emfv, const char *uri) { @@ -4735,7 +4752,7 @@ } static void -@@ -1613,7 +1614,7 @@ +@@ -1613,7 +1614,7 @@ filter_type_uid (CamelFolder *folder, co data->type = type; data->source = source; @@ -4744,7 +4761,7 @@ } static void -@@ -1711,7 +1712,7 @@ +@@ -1711,7 +1712,7 @@ vfolder_type_uid (CamelFolder *folder, c data->type = type; data->uri = g_strdup (uri); @@ -4753,7 +4770,7 @@ } static void -@@ -2370,7 +2371,7 @@ +@@ -2370,7 +2371,7 @@ emfv_message_selected_timeout(void *data g_object_ref (emfv); /* TODO: we should manage our own thread stuff, would make cancelling outstanding stuff easier */ e_profile_event_emit("goto.load", emfv->displayed_uid, 0); @@ -4762,8 +4779,8 @@ } else { e_profile_event_emit("goto.empty", "", 0); g_free(emfv->priv->selected_uid); ---- evolution-2.10.1/mail/mail-session.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/mail-session.c 2007-05-16 16:17:38.000000000 -0400 +--- evolution-2.10.2/mail/mail-session.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.2/mail/mail-session.c 2007-06-06 13:02:25.000000000 -0400 @@ -35,7 +35,7 @@ #include @@ -4773,7 +4790,7 @@ #include /* FIXME: this is where camel_init is defined, it shouldn't include everything else */ #include -@@ -256,21 +256,22 @@ +@@ -256,21 +256,22 @@ forget_password (CamelSession *session, /* ********************************************************************** */ @@ -4800,7 +4817,7 @@ /* clicked, send back the reply */ static void -@@ -278,122 +279,116 @@ +@@ -278,122 +279,116 @@ user_message_response (GtkDialog *dialog { gtk_widget_destroy ((GtkWidget *) dialog); @@ -4980,7 +4997,7 @@ } else ret = TRUE; -@@ -533,7 +528,7 @@ +@@ -533,7 +528,7 @@ get_filter_driver (CamelSession *session /* TODO: This is very temporary, until we have a better way to do the progress reporting, we just borrow a dummy mail-mt thread message and hook it onto out camel thread message */ @@ -4989,7 +5006,7 @@ static void *ms_thread_msg_new(CamelSession *session, CamelSessionThreadOps *ops, unsigned int size) { -@@ -542,7 +537,7 @@ +@@ -542,7 +537,7 @@ static void *ms_thread_msg_new(CamelSess /* We create a dummy mail_msg, and then copy its cancellation port over to ours, so we get cancellation and progress in common with hte existing mail code, for free */ if (msg) { @@ -4998,7 +5015,7 @@ msg->data = m; camel_operation_unref(msg->op); -@@ -555,7 +550,7 @@ +@@ -555,7 +550,7 @@ static void *ms_thread_msg_new(CamelSess static void ms_thread_msg_free(CamelSession *session, CamelSessionThreadMsg *m) { @@ -5007,7 +5024,7 @@ ms_parent_class->thread_msg_free(session, m); } -@@ -678,22 +673,23 @@ +@@ -678,22 +673,23 @@ mail_session_set_interactive (gboolean i MAIL_SESSION (session)->interactive = interactive; if (!interactive) { @@ -5037,8 +5054,8 @@ } } } ---- evolution-2.10.1/mail/mail-mt.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/mail-mt.c 2007-05-16 16:17:38.000000000 -0400 +--- evolution-2.10.2/mail/mail-mt.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.2/mail/mail-mt.c 2007-06-06 13:02:25.000000000 -0400 @@ -29,8 +29,8 @@ #include #include @@ -5049,7 +5066,7 @@ #include #include -@@ -63,7 +63,7 @@ +@@ -63,7 +63,7 @@ static void mail_operation_status(struct #endif /* background operation status stuff */ @@ -5058,7 +5075,7 @@ int activity_state; /* sigh sigh sigh, we need to keep track of the state external to the pointer itself for locking/race conditions */ int activity_id; -@@ -82,15 +82,12 @@ +@@ -82,15 +82,12 @@ static GHashTable *mail_msg_active_table static pthread_mutex_t mail_msg_lock = PTHREAD_MUTEX_INITIALIZER; static pthread_cond_t mail_msg_cond = PTHREAD_COND_INITIALIZER; @@ -5077,7 +5094,7 @@ MAIL_MT_LOCK(mail_msg_lock); -@@ -112,7 +109,6 @@ +@@ -112,7 +109,6 @@ void *mail_msg_new(mail_msg_op_t *ops, E fprintf(log, "Logging async operations\n"); if (log_locks) { @@ -5085,7 +5102,7 @@ fprintf(log, "%" G_GINT64_MODIFIER "x: lock mail_msg_lock\n", e_util_pthread_id(pthread_self())); } } else { -@@ -122,13 +118,13 @@ +@@ -122,13 +118,13 @@ void *mail_msg_new(mail_msg_op_t *ops, E } } #endif @@ -5103,7 +5120,7 @@ g_hash_table_insert(mail_msg_active_table, GINT_TO_POINTER(msg->seq), msg); -@@ -143,12 +139,15 @@ +@@ -143,12 +139,15 @@ void *mail_msg_new(mail_msg_op_t *ops, E return msg; } @@ -5122,7 +5139,7 @@ e_activity_handler_operation_finished (activity_handler, activity_id); } -@@ -177,58 +176,84 @@ +@@ -177,58 +176,84 @@ checkmem(void *p) } #endif @@ -5233,7 +5250,7 @@ } /* hash table of ops->dialogue of active errors */ -@@ -244,9 +269,10 @@ +@@ -244,9 +269,10 @@ static void error_response(GtkObject *o, gtk_widget_destroy((GtkWidget *)o); } @@ -5246,7 +5263,7 @@ char *what; GtkDialog *gd; -@@ -271,27 +297,27 @@ +@@ -271,27 +297,27 @@ void mail_msg_check_error(void *msg) /* check to see if we have dialogue already running for this operation */ /* we key on the operation pointer, which is at least accurate enough for the operation type, although it could be on a different object. */ @@ -5281,7 +5298,7 @@ MAIL_MT_LOCK(mail_msg_lock); m = g_hash_table_lookup(mail_msg_active_table, GINT_TO_POINTER(msgid)); -@@ -304,13 +330,12 @@ +@@ -304,13 +330,12 @@ void mail_msg_cancel(unsigned int msgid) /* waits for a message to be finished processing (freed) @@ -5298,7 +5315,7 @@ MAIL_MT_LOCK(mail_msg_lock); m = g_hash_table_lookup(mail_msg_active_table, GINT_TO_POINTER(msgid)); while (m) { -@@ -347,9 +372,7 @@ +@@ -347,9 +372,7 @@ int mail_msg_active(unsigned int msgid) void mail_msg_wait_all(void) { @@ -5309,8 +5326,81 @@ MAIL_MT_LOCK(mail_msg_lock); while (g_hash_table_size(mail_msg_active_table) > 0) { MAIL_MT_UNLOCK(mail_msg_lock); -@@ -420,241 +443,183 @@ - MAIL_MT_UNLOCK(mail_msg_lock); +@@ -367,294 +390,239 @@ void mail_msg_wait_all(void) + } + + /* **************************************** */ +-struct _cancel_hook_data { +- struct _cancel_hook_data *next; +- struct _cancel_hook_data *prev; + +- GDestroyNotify func; +- void *data; +-}; ++static GHookList cancel_hook_list; + +-static EDList cancel_hook_list = E_DLIST_INITIALISER(cancel_hook_list); +- +-void *mail_cancel_hook_add(GDestroyNotify func, void *data) ++GHook * ++mail_cancel_hook_add (GHookFunc func, gpointer data) + { +- struct _cancel_hook_data *d; ++ GHook *hook; + +- d = g_malloc0(sizeof(*d)); +- d->func = func; +- d->data = data; ++ MAIL_MT_LOCK (mail_msg_lock); + +- MAIL_MT_LOCK(mail_msg_lock); +- e_dlist_addtail(&cancel_hook_list, (EDListNode *)d); +- MAIL_MT_UNLOCK(mail_msg_lock); ++ if (!cancel_hook_list.is_setup) ++ g_hook_list_init (&cancel_hook_list, sizeof (GHook)); + +- return (void *)d; +-} ++ hook = g_hook_alloc (&cancel_hook_list); ++ hook->func = func; ++ hook->data = data; + +-void mail_cancel_hook_remove(void *handle) +-{ +- struct _cancel_hook_data *d = handle; ++ g_hook_append (&cancel_hook_list, hook); + +- MAIL_MT_LOCK(mail_msg_lock); +- e_dlist_remove((EDListNode *)d); +- MAIL_MT_UNLOCK(mail_msg_lock); +- g_free(d); ++ MAIL_MT_UNLOCK (mail_msg_lock); ++ ++ return hook; + } + +-void mail_cancel_all(void) ++void ++mail_cancel_hook_remove (GHook *hook) + { +- struct _cancel_hook_data *d, *n; ++ MAIL_MT_LOCK (mail_msg_lock); + +- camel_operation_cancel(NULL); ++ g_assert (cancel_hook_list.is_setup); ++ g_hook_destroy_link (&cancel_hook_list, hook); + +- /* I can ssee a deadlock coming on ... */ +- MAIL_MT_LOCK(mail_msg_lock); +- d = (struct _cancel_hook_data *)cancel_hook_list.head; +- n = d->next; +- while (n) { +- d->func(d->data); +- d = n; +- n = n->next; +- } +- MAIL_MT_UNLOCK(mail_msg_lock); ++ MAIL_MT_UNLOCK (mail_msg_lock); } -EMsgPort *mail_gui_port; @@ -5337,39 +5427,36 @@ -#ifdef G_OS_WIN32 -EThread * -mail_win32_get_mail_thread_queued (void) -+#define PERIODIC_RATE_HZ 10 -+static guint periodic_source_id = 0; ++void ++mail_cancel_all (void) + { +- return mail_thread_queued; ++ camel_operation_cancel (NULL); ++ ++ MAIL_MT_LOCK (mail_msg_lock); ++ ++ if (cancel_hook_list.is_setup) ++ g_hook_list_invoke (&cancel_hook_list, FALSE); ++ ++ MAIL_MT_UNLOCK (mail_msg_lock); + } +-#endif ++ ++static guint idle_source_id = 0; ++G_LOCK_DEFINE_STATIC (idle_source_id); +static GAsyncQueue *main_loop_queue = NULL; +static GAsyncQueue *msg_reply_queue = NULL; +static GThread *main_thread = NULL; -+ -+static void -+periodic_cleanup (void) - { -- return mail_thread_queued; -+ periodic_source_id = 0; -+ -+ g_assert (main_loop_queue != NULL); -+ g_async_queue_unref (main_loop_queue); -+ main_loop_queue = NULL; -+ -+ g_assert (msg_reply_queue != NULL); -+ g_async_queue_unref (msg_reply_queue); -+ msg_reply_queue = NULL; - } --#endif static gboolean -mail_msgport_replied(GIOChannel *source, GIOCondition cond, void *d) -+periodic_processing (void) ++mail_msg_idle_cb (void) { - EMsgPort *port = (EMsgPort *)d; - mail_msg_t *m; -+ MailMsg *msg; - +- - while (( m = (mail_msg_t *)e_msgport_get(port))) { -+ g_assert (main_loop_queue != NULL); -+ g_assert (msg_reply_queue != NULL); ++ MailMsg *msg; -#ifdef MALLOC_CHECK - checkmem(m); @@ -5382,11 +5469,17 @@ - fprintf(log, "%p: Replied to GUI thread (exception `%s'\n", m, - camel_exception_get_description(&m->ex)?camel_exception_get_description(&m->ex):"None"); -#endif -- ++ g_assert (main_loop_queue != NULL); ++ g_assert (msg_reply_queue != NULL); + - if (m->ops->reply_msg) - m->ops->reply_msg(m); - mail_msg_check_error(m); - mail_msg_free(m); ++ G_LOCK (idle_source_id); ++ idle_source_id = 0; ++ G_UNLOCK (idle_source_id); ++ + /* check the main loop queue */ + while ((msg = g_async_queue_try_pop (main_loop_queue)) != NULL) { + if (msg->info->exec != NULL) @@ -5404,7 +5497,8 @@ + mail_msg_unref (msg); } - return TRUE; +- return TRUE; ++ return FALSE; } -static gboolean @@ -5414,6 +5508,28 @@ { - EMsgPort *port = (EMsgPort *)d; - mail_msg_t *m; +- +- while (( m = (mail_msg_t *)e_msgport_get(port))) { +-#ifdef MALLOC_CHECK +- checkmem(m); +- checkmem(m->cancel); +- checkmem(m->priv); +-#endif +- +-#ifdef LOG_OPS +- if (log_ops) +- fprintf(log, "%p: Received at GUI thread\n", m); +-#endif +- +- if (m->ops->receive_msg) +- m->ops->receive_msg(m); +- if (m->msg.reply_port) +- e_msgport_reply((EMsg *)m); +- else { +- if (m->ops->reply_msg) +- m->ops->reply_msg(m); +- mail_msg_free(m); +- } + if (msg->info->desc != NULL) { + gchar *text = msg->info->desc (msg); + camel_operation_register (msg->cancel); @@ -5434,137 +5550,107 @@ + camel_operation_unref (msg->cancel); + msg->cancel = NULL; + MAIL_MT_UNLOCK (mail_msg_lock); -+ } - -- while (( m = (mail_msg_t *)e_msgport_get(port))) { --#ifdef MALLOC_CHECK -- checkmem(m); -- checkmem(m->cancel); -- checkmem(m->priv); --#endif -+ g_async_queue_push (msg_reply_queue, msg); -+} - --#ifdef LOG_OPS -- if (log_ops) -- fprintf(log, "%p: Received at GUI thread\n", m); --#endif -+void -+mail_msg_cleanup (void) -+{ -+ GSource *source; - -- if (m->ops->receive_msg) -- m->ops->receive_msg(m); -- if (m->msg.reply_port) -- e_msgport_reply((EMsg *)m); -- else { -- if (m->ops->reply_msg) -- m->ops->reply_msg(m); -- mail_msg_free(m); -- } -- } -+ mail_msg_wait_all(); + } - return TRUE; -+ /* stop periodic processing */ -+ source = g_main_context_find_source_by_id ( -+ g_main_context_default (), periodic_source_id); -+ g_assert (source != NULL); -+ g_source_destroy (source); ++ g_async_queue_push (msg_reply_queue, msg); ++ ++ G_LOCK (idle_source_id); ++ if (idle_source_id == 0) ++ idle_source_id = g_idle_add ( ++ (GSourceFunc) mail_msg_idle_cb, NULL); ++ G_UNLOCK (idle_source_id); } -/* Test code, lighterwight, more configurable calls */ -static gboolean -mail_msgport_received2(GIOChannel *source, GIOCondition cond, void *d) +void -+mail_msg_init (void) ++mail_msg_cleanup (void) { - EMsgPort *port = (EMsgPort *)d; - mail_msg_t *m; -+ main_loop_queue = g_async_queue_new (); -+ msg_reply_queue = g_async_queue_new (); ++ mail_msg_wait_all(); - while (( m = (mail_msg_t *)e_msgport_get(port))) { -#ifdef LOG_OPS - if (log_ops) - fprintf(log, "%p: Received at GUI2 thread\n", m); -#endif -+ /* start periodic processing */ -+ periodic_source_id = g_timeout_add_full ( -+ G_PRIORITY_DEFAULT, -+ 1000 / PERIODIC_RATE_HZ, -+ (GSourceFunc) periodic_processing, NULL, -+ (GDestroyNotify) periodic_cleanup); ++ G_LOCK (idle_source_id); ++ if (idle_source_id != 0) { ++ GSource *source; - if (m->ops->receive_msg) - m->ops->receive_msg(m); - else - mail_msg_free(m); -- } -+ mail_msg_active_table = g_hash_table_new (NULL, NULL); -+ main_thread = g_thread_self (); ++ /* Cancel the idle source. */ ++ source = g_main_context_find_source_by_id ( ++ g_main_context_default (), idle_source_id); ++ g_assert (source != NULL); ++ g_source_destroy (source); ++ idle_source_id = 0; + } ++ G_UNLOCK (idle_source_id); - return TRUE; -+ mail_async_event = mail_async_event_new (); - } +-} ++ g_assert (main_loop_queue != NULL); ++ g_async_queue_unref (main_loop_queue); ++ main_loop_queue = NULL; + ++ g_assert (msg_reply_queue != NULL); ++ g_async_queue_unref (msg_reply_queue); ++ msg_reply_queue = NULL; ++} -- -static void -mail_msg_destroy(EThread *e, EMsg *msg, void *data) -+static gint -+mail_msg_compare (const MailMsg *msg1, const MailMsg *msg2) ++void ++mail_msg_init (void) { - mail_msg_t *m = (mail_msg_t *)msg; -+ gint priority1 = msg1->priority; -+ gint priority2 = msg2->priority; ++ main_loop_queue = g_async_queue_new (); ++ msg_reply_queue = g_async_queue_new (); -#ifdef MALLOC_CHECK - checkmem(m); - checkmem(m->cancel); - checkmem(m->priv); -#endif -+ if (priority1 == priority2) -+ return 0; ++ mail_msg_active_table = g_hash_table_new (NULL, NULL); ++ main_thread = g_thread_self (); - mail_msg_free(m); -+ return (priority1 < priority2) ? 1 : -1; ++ mail_async_event = mail_async_event_new (); } -static void -mail_msg_received(EThread *e, EMsg *msg, void *data) -+static gpointer -+create_thread_pool (gpointer data) ++static gint ++mail_msg_compare (const MailMsg *msg1, const MailMsg *msg2) { - mail_msg_t *m = (mail_msg_t *)msg; -+ GThreadPool *thread_pool; -+ gint max_threads = GPOINTER_TO_INT (data); - +- -#ifdef MALLOC_CHECK - checkmem(m); - checkmem(m->cancel); - checkmem(m->priv); -#endif -+ /* once created, run forever */ -+ thread_pool = g_thread_pool_new ( -+ (GFunc) mail_msg_proxy, NULL, max_threads, FALSE, NULL); -+ g_thread_pool_set_sort_function ( -+ thread_pool, (GCompareDataFunc) mail_msg_compare, NULL); ++ gint priority1 = msg1->priority; ++ gint priority2 = msg2->priority; - if (m->ops->describe_msg) { - char *text = m->ops->describe_msg(m, FALSE); -+ return thread_pool; -+} ++ if (priority1 == priority2) ++ return 0; -#ifdef LOG_OPS - if (log_ops) - fprintf(log, "%p: Received at thread %" G_GINT64_MODIFIER "x: '%s'\n", m, e_util_pthread_id(pthread_self()), text); -#endif -+void -+mail_msg_main_loop_push (gpointer msg) -+{ -+ g_async_queue_push_sorted (main_loop_queue, msg, -+ (GCompareDataFunc) mail_msg_compare, NULL); ++ return (priority1 < priority2) ? 1 : -1; +} - d(printf("message received at thread\n")); @@ -5577,17 +5663,22 @@ - if (log_ops) - fprintf(log, "%p: Received at thread %" G_GINT64_MODIFIER "x\n", m, e_util_pthread_id(pthread_self())); -#endif -+void -+mail_msg_unordered_push (gpointer msg) ++static gpointer ++create_thread_pool (gpointer data) +{ -+ static GOnce once = G_ONCE_INIT; ++ GThreadPool *thread_pool; ++ gint max_threads = GPOINTER_TO_INT (data); - if (m->ops->receive_msg) { - mail_enable_stop(); - m->ops->receive_msg(m); - mail_disable_stop(); - } -+ g_once (&once, (GThreadFunc) create_thread_pool, GINT_TO_POINTER (10)); ++ /* once created, run forever */ ++ thread_pool = g_thread_pool_new ( ++ (GFunc) mail_msg_proxy, NULL, max_threads, FALSE, NULL); ++ g_thread_pool_set_sort_function ( ++ thread_pool, (GCompareDataFunc) mail_msg_compare, NULL); - if (m->ops->describe_msg) { - camel_operation_end(m->cancel); @@ -5597,23 +5688,35 @@ - m->cancel = NULL; - MAIL_MT_UNLOCK(mail_msg_lock); - } -+ g_thread_pool_push ((GThreadPool *) once.retval, msg, NULL); ++ return thread_pool; } -void mail_msg_cleanup(void) +void -+mail_msg_fast_ordered_push (gpointer msg) ++mail_msg_main_loop_push (gpointer msg) { - mail_msg_wait_all(); -- ++ g_async_queue_push_sorted (main_loop_queue, msg, ++ (GCompareDataFunc) mail_msg_compare, NULL); + - e_thread_destroy(mail_thread_queued_slow); - e_thread_destroy(mail_thread_queued); - e_thread_destroy(mail_thread_new); -+ static GOnce once = G_ONCE_INIT; ++ G_LOCK (idle_source_id); ++ if (idle_source_id == 0) ++ idle_source_id = g_idle_add ( ++ (GSourceFunc) mail_msg_idle_cb, NULL); ++ G_UNLOCK (idle_source_id); ++} - g_io_channel_unref(mail_gui_channel); - g_io_channel_unref(mail_gui_reply_channel); -+ g_once (&once, (GThreadFunc) create_thread_pool, GINT_TO_POINTER (1)); ++void ++mail_msg_unordered_push (gpointer msg) ++{ ++ static GOnce once = G_ONCE_INIT; ++ ++ g_once (&once, (GThreadFunc) create_thread_pool, GINT_TO_POINTER (10)); - e_msgport_destroy(mail_gui_port); - e_msgport_destroy(mail_gui_reply_port); @@ -5623,7 +5726,7 @@ -static guint -em_channel_setup(EMsgPort **port, GIOChannel **channel, GIOFunc func) +void -+mail_msg_slow_ordered_push (gpointer msg) ++mail_msg_fast_ordered_push (gpointer msg) { - GSource *source; - guint id; @@ -5647,8 +5750,8 @@ } -void mail_msg_init(void) -+gboolean -+mail_in_main_thread (void) ++void ++mail_msg_slow_ordered_push (gpointer msg) { - em_channel_setup(&mail_gui_reply_port, &mail_gui_reply_channel, mail_msgport_replied); - mail_gui_watch = em_channel_setup(&mail_gui_port, &mail_gui_channel, mail_msgport_received); @@ -5669,16 +5772,24 @@ - e_thread_set_msg_received(mail_thread_new, mail_msg_received, 0); - e_thread_set_reply_port(mail_thread_new, mail_gui_reply_port); - e_thread_set_queue_limit(mail_thread_new, 10); -- ++ static GOnce once = G_ONCE_INIT; + - mail_msg_active_table = g_hash_table_new(NULL, NULL); - mail_gui_thread = pthread_self(); -- ++ g_once (&once, (GThreadFunc) create_thread_pool, GINT_TO_POINTER (1)); + - mail_async_event = mail_async_event_new(); ++ g_thread_pool_push ((GThreadPool *) once.retval, msg, NULL); ++} ++ ++gboolean ++mail_in_main_thread (void) ++{ + return (g_thread_self () == main_thread); } /* ********************************************************************** */ -@@ -665,7 +630,8 @@ +@@ -665,7 +633,8 @@ static pthread_mutex_t status_lock = PTH /* ********************************************************************** */ struct _proxy_msg { @@ -5688,7 +5799,7 @@ MailAsyncEvent *ea; mail_async_event_t type; -@@ -679,10 +645,8 @@ +@@ -679,10 +648,8 @@ struct _proxy_msg { }; static void @@ -5700,7 +5811,7 @@ m->thread = pthread_self(); m->have_thread = TRUE; m->func(m->o, m->event_data, m->data); -@@ -697,16 +661,17 @@ +@@ -697,16 +664,17 @@ static int idle_async_event(void *mm) { do_async_event(mm); @@ -5724,7 +5835,7 @@ }; MailAsyncEvent *mail_async_event_new(void) -@@ -723,10 +688,9 @@ +@@ -723,10 +691,9 @@ int mail_async_event_emit(MailAsyncEvent { struct _proxy_msg *m; int id; @@ -5736,7 +5847,7 @@ m->func = func; m->o = o; m->event_data = event_data; -@@ -735,7 +699,7 @@ +@@ -735,7 +702,7 @@ int mail_async_event_emit(MailAsyncEvent m->type = type; m->have_thread = FALSE; @@ -5745,7 +5856,7 @@ g_mutex_lock(ea->lock); ea->tasks = g_slist_prepend(ea->tasks, m); g_mutex_unlock(ea->lock); -@@ -743,12 +707,12 @@ +@@ -743,12 +710,12 @@ int mail_async_event_emit(MailAsyncEvent /* We use an idle function instead of our own message port only because the gui message ports's notification buffer might overflow and deadlock us */ if (type == MAIL_ASYNC_GUI) { @@ -5761,7 +5872,7 @@ return id; } -@@ -762,7 +726,7 @@ +@@ -762,7 +729,7 @@ int mail_async_event_destroy(MailAsyncEv g_mutex_lock(ea->lock); while (ea->tasks) { m = ea->tasks->data; @@ -5770,7 +5881,7 @@ if (m->have_thread && pthread_equal(m->thread, thread)) { g_warning("Destroying async event from inside an event, returning EDEADLK"); g_mutex_unlock(ea->lock); -@@ -784,17 +748,18 @@ +@@ -784,17 +751,18 @@ int mail_async_event_destroy(MailAsyncEv /* ********************************************************************** */ struct _call_msg { @@ -5792,7 +5903,7 @@ void *p1, *p2, *p3, *p4, *p5; int i1; va_list ap; -@@ -842,45 +807,48 @@ +@@ -842,45 +810,47 @@ do_call(struct _mail_msg *mm) m->ret = m->func(p1, p2, i1, p3, p4, p5); break; } @@ -5841,11 +5952,10 @@ - e_msgport_destroy(reply); - } else { - do_call(&m->msg); -+ mail_msg_ref (m); -+ + if (mail_in_main_thread ()) + do_call (m); + else { ++ mail_msg_ref (m); + m->done = e_flag_new (); + mail_msg_main_loop_push (m); + e_flag_wait (m->done); @@ -5860,7 +5970,7 @@ return ret; } -@@ -889,40 +857,42 @@ +@@ -889,40 +859,42 @@ void *mail_call_main(mail_call_t type, M /* locked via status_lock */ static int busy_state; @@ -5915,7 +6025,7 @@ } MAIL_MT_UNLOCK(status_lock); } -@@ -930,7 +900,7 @@ +@@ -930,7 +902,7 @@ void mail_disable_stop(void) /* ******************************************************************************** */ struct _op_status_msg { @@ -5924,7 +6034,7 @@ struct _CamelOperation *op; char *what; -@@ -938,16 +908,16 @@ +@@ -938,16 +910,16 @@ struct _op_status_msg { void *data; }; @@ -5946,7 +6056,7 @@ MAIL_MT_LOCK (mail_msg_lock); -@@ -986,8 +956,8 @@ +@@ -986,8 +958,8 @@ static void do_op_status(struct _mail_ms progress_icon = e_icon_factory_get_icon ("stock_mail-unread", E_ICON_SIZE_MENU); MAIL_MT_UNLOCK (mail_msg_lock); @@ -5957,7 +6067,7 @@ /* uncommenting because message is not very useful for a user, see bug 271734*/ else { what = g_strdup(""); -@@ -1021,18 +991,17 @@ +@@ -1021,18 +993,17 @@ static void do_op_status(struct _mail_ms } static void @@ -5983,7 +6093,7 @@ }; static void -@@ -1042,7 +1011,7 @@ +@@ -1042,7 +1013,7 @@ mail_operation_status (struct _CamelOper d(printf("got operation statys: %s %d%%\n", what, pc)); @@ -5992,7 +6102,7 @@ m->op = op; m->what = g_strdup(what); switch (pc) { -@@ -1055,7 +1024,7 @@ +@@ -1055,7 +1026,7 @@ mail_operation_status (struct _CamelOper } m->pc = pc; m->data = data; @@ -6001,9 +6111,9 @@ } /* ******************** */ ---- evolution-2.10.1/plugins/folder-unsubscribe/folder-unsubscribe.c.kill-ethread 2007-04-09 09:09:11.000000000 -0400 -+++ evolution-2.10.1/plugins/folder-unsubscribe/folder-unsubscribe.c 2007-05-16 16:17:38.000000000 -0400 -@@ -44,32 +44,30 @@ +--- evolution-2.10.2/plugins/folder-unsubscribe/folder-unsubscribe.c.kill-ethread 2007-04-09 09:09:11.000000000 -0400 ++++ evolution-2.10.2/plugins/folder-unsubscribe/folder-unsubscribe.c 2007-06-06 13:02:25.000000000 -0400 +@@ -44,32 +44,30 @@ void org_gnome_mail_folder_unsubscribe ( struct _folder_unsub_t { @@ -6044,7 +6154,7 @@ if (((CamelService *) store)->provider->url_flags & CAMEL_URL_FRAGMENT_IS_PATH) path = url->fragment; else if (url->path && url->path[0]) -@@ -82,18 +80,17 @@ +@@ -82,18 +80,17 @@ folder_unsubscribe__unsub (struct _mail_ } static void @@ -6071,7 +6181,7 @@ }; -@@ -105,8 +102,8 @@ +@@ -105,8 +102,8 @@ org_gnome_mail_folder_unsubscribe (EPlug if (target->uri == NULL) return; @@ -6082,9 +6192,9 @@ - e_thread_put (mail_thread_new, (EMsg *) unsub); + mail_msg_unordered_push (unsub); } ---- evolution-2.10.1/plugins/mark-all-read/mark-all-read.c.kill-ethread 2007-04-09 09:09:14.000000000 -0400 -+++ evolution-2.10.1/plugins/mark-all-read/mark-all-read.c 2007-05-16 16:17:38.000000000 -0400 -@@ -44,7 +44,7 @@ +--- evolution-2.10.2/plugins/mark-all-read/mark-all-read.c.kill-ethread 2007-05-27 14:21:10.000000000 -0400 ++++ evolution-2.10.2/plugins/mark-all-read/mark-all-read.c 2007-06-06 13:02:25.000000000 -0400 +@@ -44,7 +44,7 @@ org_gnome_mark_all_read (EPlugin *ep, EM return; } @@ -6093,9 +6203,9 @@ } static void ---- evolution-2.10.1/plugins/exchange-operations/exchange-folder.c.kill-ethread 2007-04-09 09:09:13.000000000 -0400 -+++ evolution-2.10.1/plugins/exchange-operations/exchange-folder.c 2007-05-16 16:17:38.000000000 -0400 -@@ -134,7 +134,7 @@ +--- evolution-2.10.2/plugins/exchange-operations/exchange-folder.c.kill-ethread 2007-05-25 02:43:33.000000000 -0400 ++++ evolution-2.10.2/plugins/exchange-operations/exchange-folder.c 2007-06-06 13:02:25.000000000 -0400 +@@ -140,7 +140,7 @@ org_gnome_exchange_folder_inbox_unsubscr inbox_physical_uri = e_folder_get_physical_uri (inbox); /* To get the CamelStore/Folder */ @@ -6104,18 +6214,18 @@ } ---- evolution-2.10.1/plugins/save-attachments/save-attachments.c.kill-ethread 2007-04-09 09:09:15.000000000 -0400 -+++ evolution-2.10.1/plugins/save-attachments/save-attachments.c 2007-05-16 16:17:38.000000000 -0400 -@@ -407,5 +407,5 @@ +--- evolution-2.10.2/plugins/save-attachments/save-attachments.c.kill-ethread 2007-04-09 09:09:15.000000000 -0400 ++++ evolution-2.10.2/plugins/save-attachments/save-attachments.c 2007-06-06 13:02:25.000000000 -0400 +@@ -407,5 +407,5 @@ org_gnome_save_attachments_save(EPlugin camel_object_ref(data->folder); data->uid = g_strdup(target->uids->pdata[0]); - mail_get_message(data->folder, data->uid, save_got_message, data, mail_thread_new); + mail_get_message(data->folder, data->uid, save_got_message, data, mail_msg_unordered_push); } ---- evolution-2.10.1/plugins/mailing-list-actions/mailing-list-actions.c.kill-ethread 2007-04-09 09:09:14.000000000 -0400 -+++ evolution-2.10.1/plugins/mailing-list-actions/mailing-list-actions.c 2007-05-16 16:17:38.000000000 -0400 -@@ -89,7 +89,7 @@ +--- evolution-2.10.2/plugins/mailing-list-actions/mailing-list-actions.c.kill-ethread 2007-04-09 09:09:14.000000000 -0400 ++++ evolution-2.10.2/plugins/mailing-list-actions/mailing-list-actions.c 2007-06-06 13:02:25.000000000 -0400 +@@ -89,7 +89,7 @@ void emla_list_action (EPlugin *item, EM data->uri = strdup (sel->uri); mail_get_message (sel->folder, (const char*) g_ptr_array_index (sel->uids, 0), @@ -6124,9 +6234,9 @@ } void emla_list_action_do (CamelFolder *folder, const char *uid, CamelMimeMessage *msg, void *data) ---- evolution-2.10.1/plugins/groupwise-features/share-folder-common.c.kill-ethread 2007-04-09 09:09:12.000000000 -0400 -+++ evolution-2.10.1/plugins/groupwise-features/share-folder-common.c 2007-05-16 16:17:38.000000000 -0400 -@@ -121,7 +121,7 @@ +--- evolution-2.10.2/plugins/groupwise-features/share-folder-common.c.kill-ethread 2007-04-09 09:09:12.000000000 -0400 ++++ evolution-2.10.2/plugins/groupwise-features/share-folder-common.c 2007-06-06 13:02:25.000000000 -0400 +@@ -121,7 +121,7 @@ shared_folder_abort (EPlugin *ep, EConfi } struct _EMCreateFolder { @@ -6135,7 +6245,7 @@ /* input data */ CamelStore *store; -@@ -137,31 +137,26 @@ +@@ -137,31 +137,26 @@ struct _EMCreateFolder { void *user_data; }; @@ -6173,7 +6283,7 @@ struct ShareInfo *ssi = (struct ShareInfo *) m->user_data; CamelStore *store = CAMEL_STORE (m->store) ; EGwConnection *ccnc; -@@ -180,10 +175,8 @@ +@@ -180,10 +175,8 @@ create_folder__created (struct _mail_msg } static void @@ -6185,7 +6295,7 @@ camel_store_free_folder_info (m->store, m->fi); camel_object_unref (m->store); g_free (m->full_name); -@@ -191,11 +184,12 @@ +@@ -191,11 +184,12 @@ create_folder__free (struct _mail_msg *m g_free (m->name); } @@ -6203,7 +6313,7 @@ }; static void -@@ -229,7 +223,7 @@ +@@ -229,7 +223,7 @@ create_folder (CamelStore *store, const parent = namebuf; } @@ -6212,7 +6322,7 @@ camel_object_ref (store); m->store = store; m->full_name = g_strdup (full_name); -@@ -238,8 +232,8 @@ +@@ -238,8 +232,8 @@ create_folder (CamelStore *store, const m->user_data = (struct ShareInfo *) user_data; m->done = done; g_free (namebuf); @@ -6223,9 +6333,9 @@ return id; } ---- evolution-2.10.1/calendar/gui/alarm-notify/alarm-notify.h.kill-ethread 2007-04-09 09:10:29.000000000 -0400 -+++ evolution-2.10.1/calendar/gui/alarm-notify/alarm-notify.h 2007-05-16 16:17:38.000000000 -0400 -@@ -39,19 +39,6 @@ +--- evolution-2.10.2/calendar/gui/alarm-notify/alarm-notify.h.kill-ethread 2007-04-09 09:10:29.000000000 -0400 ++++ evolution-2.10.2/calendar/gui/alarm-notify/alarm-notify.h 2007-06-06 13:02:25.000000000 -0400 +@@ -39,19 +39,6 @@ typedef struct _AlarmNotifyClass AlarmNo typedef struct _AlarmNotifyPrivate AlarmNotifyPrivate; @@ -6245,9 +6355,9 @@ struct _AlarmNotify { BonoboObject object; ---- evolution-2.10.1/calendar/gui/alarm-notify/alarm-notify.c.kill-ethread 2007-04-09 09:10:29.000000000 -0400 -+++ evolution-2.10.1/calendar/gui/alarm-notify/alarm-notify.c 2007-05-16 16:17:38.000000000 -0400 -@@ -45,10 +45,6 @@ +--- evolution-2.10.2/calendar/gui/alarm-notify/alarm-notify.c.kill-ethread 2007-04-09 09:10:29.000000000 -0400 ++++ evolution-2.10.2/calendar/gui/alarm-notify/alarm-notify.c 2007-06-06 13:02:25.000000000 -0400 +@@ -45,10 +45,6 @@ struct _AlarmNotifyPrivate { GMutex *mutex; }; @@ -6258,7 +6368,7 @@ #define d(x) x -@@ -286,72 +282,12 @@ +@@ -286,72 +282,12 @@ alarm_notify_finalize (GObject *object) g_mutex_free (priv->mutex); g_free (priv); @@ -6331,7 +6441,7 @@ /** * alarm_notify_new: * -@@ -363,23 +299,10 @@ +@@ -363,23 +299,10 @@ alarm_msg_received(EThread *e, EMsg *msg AlarmNotify * alarm_notify_new (void) { @@ -6359,9 +6469,9 @@ } static void ---- evolution-2.10.1/calendar/gui/alarm-notify/alarm-queue.c.kill-ethread 2007-04-09 09:10:29.000000000 -0400 -+++ evolution-2.10.1/calendar/gui/alarm-notify/alarm-queue.c 2007-05-16 16:17:38.000000000 -0400 -@@ -115,9 +115,6 @@ +--- evolution-2.10.2/calendar/gui/alarm-notify/alarm-queue.c.kill-ethread 2007-04-09 09:10:29.000000000 -0400 ++++ evolution-2.10.2/calendar/gui/alarm-notify/alarm-queue.c 2007-06-06 13:02:25.000000000 -0400 +@@ -115,9 +115,6 @@ static int tray_blink_id = -1; static int tray_blink_state = FALSE; static AlarmNotify *an; @@ -6371,7 +6481,7 @@ /* Structure that stores a client we are monitoring */ typedef struct { /* Monitored client */ -@@ -199,6 +196,40 @@ +@@ -199,6 +196,40 @@ static void on_dialog_objs_removed_cb (E static void load_alarms_for_today (ClientAlarms *ca); static void midnight_refresh_cb (gpointer alarm_id, time_t trigger, gpointer data); @@ -6412,7 +6522,7 @@ /* Queues an alarm trigger for midnight so that we can load the next day's worth * of alarms. */ -@@ -237,47 +268,41 @@ +@@ -237,47 +268,41 @@ add_client_alarms_cb (gpointer key, gpoi } struct _midnight_refresh_msg { @@ -6470,7 +6580,7 @@ } /* Looks up a client in the client alarms hash table */ -@@ -636,6 +661,7 @@ +@@ -636,6 +661,7 @@ remove_comp (ClientAlarms *ca, ECalCompo * alarms. */ struct _query_msg { @@ -6478,7 +6588,7 @@ ECal *client; GList *objects; gpointer data; -@@ -669,7 +695,7 @@ +@@ -669,7 +695,7 @@ duplicate_ecal (GList *in_list) } static void @@ -6487,7 +6597,7 @@ { ClientAlarms *ca; time_t from, day_end; -@@ -678,13 +704,12 @@ +@@ -678,13 +704,12 @@ query_objects_changed_async (EThread *e, icaltimezone *zone; CompQueuedAlarms *cqa; GList *l; @@ -6504,7 +6614,7 @@ from = config_data_get_last_notification_time (); if (from == -1) -@@ -773,43 +798,38 @@ +@@ -773,43 +798,38 @@ query_objects_changed_async (EThread *e, comp = NULL; } g_list_free (objects); @@ -6561,7 +6671,7 @@ d(printf("%s:%d (query_objects_removed_async) - Removing %d objects\n",__FILE__, __LINE__, g_list_length(objects))); -@@ -822,27 +842,22 @@ +@@ -822,27 +842,22 @@ query_objects_removed_async (EThread *e, } g_list_free (objects); @@ -6598,7 +6708,7 @@ } -@@ -989,20 +1004,19 @@ +@@ -989,20 +1004,19 @@ free_tray_icon_data (TrayIconData *tray_ } static void @@ -6623,7 +6733,7 @@ e_cal_component_get_uid (tray_data->comp, &our_uid); g_return_if_fail (our_uid && *our_uid); -@@ -1020,37 +1034,33 @@ +@@ -1020,37 +1034,33 @@ on_dialog_objs_removed_async (EThread *e tray_data = NULL; } } @@ -6673,7 +6783,7 @@ GList *list = tray_icons_list; d(printf("%s:%d (tray_list_remove_cqa_async) - Removing CQA %p from tray list\n",__FILE__, __LINE__, cqa)); -@@ -1087,28 +1097,25 @@ +@@ -1087,28 +1097,25 @@ tray_list_remove_cqa_async(EThread *e, A gtk_tree_selection_select_iter (sel, &iter); } } @@ -6711,7 +6821,7 @@ { GList *list = tray_icons_list; -@@ -1138,55 +1145,50 @@ +@@ -1138,55 +1145,50 @@ tray_list_remove_async(EThread *e, Alarm } else list = list->next; } @@ -6785,7 +6895,7 @@ } static void -@@ -1394,29 +1396,24 @@ +@@ -1394,29 +1396,24 @@ tray_icon_blink_cb (gpointer data) /* Add a new data to tray list */ static void @@ -6826,7 +6936,7 @@ } /* Performs notification of a display alarm */ -@@ -1840,21 +1837,13 @@ +@@ -1840,21 +1837,13 @@ check_midnight_refresh (gpointer user_da new_midnight = time_day_end_with_zone (time (NULL), zone); if (new_midnight > midnight) { @@ -6853,7 +6963,7 @@ } return TRUE; -@@ -1985,14 +1974,15 @@ +@@ -1985,14 +1974,15 @@ hash_ids (gpointer a) } struct _alarm_client_msg { @@ -6872,7 +6982,7 @@ g_return_if_fail (alarm_queue_inited); g_return_if_fail (client != NULL); -@@ -2023,6 +2013,8 @@ +@@ -2023,6 +2013,8 @@ static void alarm_queue_add_async (EThre G_CALLBACK (cal_opened_cb), ca); } @@ -6881,7 +6991,7 @@ } /** -@@ -2042,20 +2034,13 @@ +@@ -2042,20 +2034,13 @@ static void alarm_queue_add_async (EThre void alarm_queue_add_client (ECal *client) { @@ -6907,7 +7017,7 @@ } /* Removes a component an its alarms */ -@@ -2107,11 +2092,10 @@ +@@ -2107,11 +2092,10 @@ remove_client_alarms (ClientAlarms *ca) * Removes a calendar client from the alarm queueing system. **/ static void @@ -6921,7 +7031,7 @@ g_return_if_fail (alarm_queue_inited); g_return_if_fail (client != NULL); -@@ -2148,24 +2132,20 @@ +@@ -2148,24 +2132,20 @@ alarm_queue_remove_async (EThread *e, Al g_free (ca); g_hash_table_remove (client_alarms_hash, client); diff --git a/evolution.spec b/evolution.spec index 6af782c..9328fe1 100644 --- a/evolution.spec +++ b/evolution.spec @@ -47,7 +47,7 @@ Name: evolution Version: 2.10.2 -Release: 1%{?dist} +Release: 2%{?dist} License: GPL Group: Applications/Productivity Summary: GNOME's next-generation groupware suite @@ -747,6 +747,9 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/evolution/%{evo_major}/libmenus.so %changelog +* Wed Jun 06 2007 Matthew Barnes - 2.10.2-2.fc7 +- Revise patch for GNOME bug #362638 to fix RH bug #240507 (hang on exit). + * Mon May 28 2007 Matthew Barnes - 2.10.2-1.fc7 - Update to 2.10.2 - Remove patch for RH bug #202289 (fixed upstream). From a8f5d57bb1b9d42a88a8a9346e027721e1b0381c Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Wed, 27 Jun 2007 18:37:05 +0000 Subject: [PATCH 05/19] - Revise patch for GNOME bug #362638 to fix RH bug #245289 (frequent hangs). --- evolution-2.8.1-kill-ethread.patch | 198 ++++++++++++++++------------- evolution.spec | 5 +- 2 files changed, 115 insertions(+), 88 deletions(-) diff --git a/evolution-2.8.1-kill-ethread.patch b/evolution-2.8.1-kill-ethread.patch index 8ae43ed..714ea3b 100644 --- a/evolution-2.8.1-kill-ethread.patch +++ b/evolution-2.8.1-kill-ethread.patch @@ -1,5 +1,5 @@ --- evolution-2.10.2/mail/mail-send-recv.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/mail-send-recv.c 2007-06-06 13:02:25.000000000 -0400 ++++ evolution-2.10.2/mail/mail-send-recv.c 2007-06-27 14:29:23.000000000 -0400 @@ -725,23 +725,22 @@ receive_get_folder(CamelFilterDriver *d, /* ********************************************************************** */ @@ -83,7 +83,7 @@ receive_done ("", data); } --- evolution-2.10.2/mail/mail-component.c.kill-ethread 2007-05-27 15:55:12.000000000 -0400 -+++ evolution-2.10.2/mail/mail-component.c 2007-06-06 13:02:25.000000000 -0400 ++++ evolution-2.10.2/mail/mail-component.c 2007-06-27 14:29:23.000000000 -0400 @@ -982,7 +982,7 @@ impl_handleURI (PortableServer_Servant s if (camel_url_get_param(url, "uid") != NULL) { char *curi = em_uri_to_camel(uri); @@ -94,7 +94,7 @@ } else { g_warning("email uri's must include a uid parameter"); --- evolution-2.10.2/mail/mail-ops.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/mail-ops.c 2007-06-06 13:05:53.000000000 -0400 ++++ evolution-2.10.2/mail/mail-ops.c 2007-06-27 14:32:56.000000000 -0400 @@ -75,7 +75,7 @@ /* used for both just filtering a folder + uid's, and for filtering a whole folder */ /* used both for fetching mail, and for filtering mail */ @@ -2143,7 +2143,7 @@ return id; } --- evolution-2.10.2/mail/em-folder-utils.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/em-folder-utils.c 2007-06-06 13:02:25.000000000 -0400 ++++ evolution-2.10.2/mail/em-folder-utils.c 2007-06-27 14:29:23.000000000 -0400 @@ -84,7 +84,7 @@ emfu_is_special_local_folder (const char } @@ -2372,7 +2372,7 @@ return id; } --- evolution-2.10.2/mail/importers/elm-importer.c.kill-ethread 2007-04-09 09:09:26.000000000 -0400 -+++ evolution-2.10.2/mail/importers/elm-importer.c 2007-06-06 13:02:25.000000000 -0400 ++++ evolution-2.10.2/mail/importers/elm-importer.c 2007-06-27 14:29:23.000000000 -0400 @@ -51,7 +51,7 @@ #define d(x) x @@ -2472,7 +2472,7 @@ return id; } --- evolution-2.10.2/mail/importers/mail-importer.c.kill-ethread 2007-04-09 09:09:26.000000000 -0400 -+++ evolution-2.10.2/mail/importers/mail-importer.c 2007-06-06 13:02:25.000000000 -0400 ++++ evolution-2.10.2/mail/importers/mail-importer.c 2007-06-27 14:29:23.000000000 -0400 @@ -132,7 +132,7 @@ struct _BonoboObject *mail_importer_fact } @@ -2610,7 +2610,7 @@ struct _import_folders_data { --- evolution-2.10.2/mail/importers/pine-importer.c.kill-ethread 2007-04-09 09:09:26.000000000 -0400 -+++ evolution-2.10.2/mail/importers/pine-importer.c 2007-06-06 13:02:25.000000000 -0400 ++++ evolution-2.10.2/mail/importers/pine-importer.c 2007-06-27 14:29:23.000000000 -0400 @@ -56,7 +56,7 @@ #define d(x) x @@ -2710,8 +2710,8 @@ return id; } ---- evolution-2.10.2/mail/em-utils.c.kill-ethread 2007-06-06 12:57:49.000000000 -0400 -+++ evolution-2.10.2/mail/em-utils.c 2007-06-06 13:02:25.000000000 -0400 +--- evolution-2.10.2/mail/em-utils.c.kill-ethread 2007-06-27 14:27:36.000000000 -0400 ++++ evolution-2.10.2/mail/em-utils.c 2007-06-27 14:29:23.000000000 -0400 @@ -1915,7 +1915,7 @@ em_utils_in_addressbook(CamelInternetAdd ESource *source = s->data; GList *contacts; @@ -2722,7 +2722,7 @@ d(printf(" checking '%s'\n", e_source_get_uri(source))); --- evolution-2.10.2/mail/mail-vfolder.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/mail-vfolder.c 2007-06-06 13:02:25.000000000 -0400 ++++ evolution-2.10.2/mail/mail-vfolder.c 2007-06-27 14:29:23.000000000 -0400 @@ -21,7 +21,7 @@ */ @@ -2958,7 +2958,7 @@ from = em_uri_from_camel(cfrom); to = em_uri_from_camel(cto); --- evolution-2.10.2/mail/em-format-html.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/em-format-html.c 2007-06-06 13:02:25.000000000 -0400 ++++ evolution-2.10.2/mail/em-format-html.c 2007-06-27 14:29:23.000000000 -0400 @@ -166,7 +166,7 @@ efh_gtkhtml_destroy(GtkHTML *html, EMFor if (efh->priv->format_timeout_id != 0) { g_source_remove(efh->priv->format_timeout_id); @@ -3084,7 +3084,7 @@ g_object_ref(emf); m->format_source = emfsource; --- evolution-2.10.2/mail/em-folder-properties.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/em-folder-properties.c 2007-06-06 13:02:25.000000000 -0400 ++++ evolution-2.10.2/mail/em-folder-properties.c 2007-06-27 14:29:23.000000000 -0400 @@ -386,7 +386,7 @@ em_folder_properties_show(GtkWindow *par } @@ -3095,7 +3095,7 @@ emfp_dialog_got_folder((char *)uri, folder, NULL); } --- evolution-2.10.2/mail/em-folder-tree.c.kill-ethread 2007-05-28 09:06:42.000000000 -0400 -+++ evolution-2.10.2/mail/em-folder-tree.c 2007-06-06 13:04:25.000000000 -0400 ++++ evolution-2.10.2/mail/em-folder-tree.c 2007-06-27 14:31:44.000000000 -0400 @@ -834,7 +834,7 @@ fail: /* TODO: Merge the drop handling code/menu's into one spot using a popup target for details */ /* Drop handling */ @@ -3333,7 +3333,7 @@ static gboolean --- evolution-2.10.2/mail/em-folder-browser.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/em-folder-browser.c 2007-06-06 13:02:25.000000000 -0400 ++++ evolution-2.10.2/mail/em-folder-browser.c 2007-06-27 14:29:23.000000000 -0400 @@ -838,7 +838,7 @@ get_view_query (ESearchBar *esb) @@ -3436,7 +3436,7 @@ return id; } --- evolution-2.10.2/mail/message-list.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/message-list.c 2007-06-06 13:02:25.000000000 -0400 ++++ evolution-2.10.2/mail/message-list.c 2007-06-27 14:29:23.000000000 -0400 @@ -1802,7 +1802,7 @@ ml_tree_drag_data_get (ETree *tree, int /* TODO: merge this with the folder tree stuff via empopup targets */ /* Drop handling */ @@ -3714,7 +3714,7 @@ m->search = g_strdup (search); m->hideexpr = g_strdup (hideexpr); --- evolution-2.10.2/mail/em-sync-stream.h.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/em-sync-stream.h 2007-06-06 13:02:25.000000000 -0400 ++++ evolution-2.10.2/mail/em-sync-stream.h 2007-06-27 14:29:23.000000000 -0400 @@ -29,41 +29,45 @@ requests are always handled in the main #ifndef EM_SYNC_STREAM_H #define EM_SYNC_STREAM_H @@ -3792,7 +3792,7 @@ #endif /* EM_SYNC_STREAM_H */ --- evolution-2.10.2/mail/em-format-html-print.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/em-format-html-print.c 2007-06-06 13:04:53.000000000 -0400 ++++ evolution-2.10.2/mail/em-format-html-print.c 2007-06-27 14:32:04.000000000 -0400 @@ -262,7 +262,7 @@ int em_format_html_print_message(EMForma g_object_ref(source); g_object_ref(efhp); @@ -3803,7 +3803,7 @@ return 0; /* damn async ... */ } --- evolution-2.10.2/mail/em-sync-stream.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/em-sync-stream.c 2007-06-06 13:02:25.000000000 -0400 ++++ evolution-2.10.2/mail/em-sync-stream.c 2007-06-27 14:29:23.000000000 -0400 @@ -25,42 +25,17 @@ #include #endif @@ -4230,7 +4230,7 @@ + emss->buffer = g_string_sized_new (size); } --- evolution-2.10.2/mail/em-subscribe-editor.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/em-subscribe-editor.c 2007-06-06 13:02:25.000000000 -0400 ++++ evolution-2.10.2/mail/em-subscribe-editor.c 2007-06-27 14:29:23.000000000 -0400 @@ -175,7 +175,7 @@ sub_unref(EMSubscribe *sub) /* ** Subscribe folder operation **************************************** */ @@ -4447,7 +4447,7 @@ sub_unref(sub); } --- evolution-2.10.2/mail/mail-mt.h.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/mail-mt.h 2007-06-06 13:02:25.000000000 -0400 ++++ evolution-2.10.2/mail/mail-mt.h 2007-06-27 14:29:23.000000000 -0400 @@ -23,47 +23,64 @@ #ifndef _MAIL_MT #define _MAIL_MT @@ -4560,7 +4560,7 @@ /* Note that almost all objects care about the lifecycle of their events, so this cannot be used */ extern MailAsyncEvent *mail_async_event; --- evolution-2.10.2/mail/mail-ops.h.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/mail-ops.h 2007-06-06 13:02:25.000000000 -0400 ++++ evolution-2.10.2/mail/mail-ops.h 2007-06-27 14:29:23.000000000 -0400 @@ -30,13 +30,14 @@ extern "C" { #pragma } #endif /* __cplusplus */ @@ -4602,7 +4602,7 @@ /* and for a store */ int mail_get_store (const char *uri, CamelOperation *op, --- evolution-2.10.2/mail/em-composer-utils.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/em-composer-utils.c 2007-06-06 13:02:25.000000000 -0400 ++++ evolution-2.10.2/mail/em-composer-utils.c 2007-06-27 14:29:23.000000000 -0400 @@ -534,7 +534,7 @@ em_utils_composer_save_draft_cb (EMsgCom strcmp (account->drafts_folder_uri, default_drafts_folder_uri) != 0) { int id; @@ -4647,7 +4647,7 @@ + mail_get_message (folder, uid, post_reply_to_message, NULL, mail_msg_unordered_push); } --- evolution-2.10.2/mail/mail-folder-cache.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/mail-folder-cache.c 2007-06-06 13:02:25.000000000 -0400 ++++ evolution-2.10.2/mail/mail-folder-cache.c 2007-06-27 14:29:23.000000000 -0400 @@ -843,15 +843,14 @@ update_folders(CamelStore *store, CamelF @@ -4734,7 +4734,7 @@ LOCK(info_lock); --- evolution-2.10.2/mail/em-folder-view.c.kill-ethread 2007-05-28 01:09:15.000000000 -0400 -+++ evolution-2.10.2/mail/em-folder-view.c 2007-06-06 13:03:17.000000000 -0400 ++++ evolution-2.10.2/mail/em-folder-view.c 2007-06-27 14:30:03.000000000 -0400 @@ -68,6 +68,7 @@ #include @@ -4780,7 +4780,7 @@ e_profile_event_emit("goto.empty", "", 0); g_free(emfv->priv->selected_uid); --- evolution-2.10.2/mail/mail-session.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/mail-session.c 2007-06-06 13:02:25.000000000 -0400 ++++ evolution-2.10.2/mail/mail-session.c 2007-06-27 14:29:23.000000000 -0400 @@ -35,7 +35,7 @@ #include @@ -5055,7 +5055,7 @@ } } --- evolution-2.10.2/mail/mail-mt.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/mail-mt.c 2007-06-06 13:02:25.000000000 -0400 ++++ evolution-2.10.2/mail/mail-mt.c 2007-06-27 14:29:23.000000000 -0400 @@ -29,8 +29,8 @@ #include #include @@ -5116,7 +5116,7 @@ msg->cancel = camel_operation_new(mail_operation_status, GINT_TO_POINTER(msg->seq)); camel_exception_init(&msg->ex); - msg->priv = g_malloc0(sizeof(*msg->priv)); -+ msg->priv = g_slice_new (MailMsgPrivate); ++ msg->priv = g_slice_new0 (MailMsgPrivate); g_hash_table_insert(mail_msg_active_table, GINT_TO_POINTER(msg->seq), msg); @@ -5139,16 +5139,32 @@ e_activity_handler_operation_finished (activity_handler, activity_id); } -@@ -177,58 +176,84 @@ checkmem(void *p) +@@ -177,58 +176,93 @@ checkmem(void *p) } #endif -void mail_msg_free(void *msg) -+gpointer -+mail_msg_ref (gpointer msg) ++static void ++mail_msg_free (MailMsg *mail_msg) { - struct _mail_msg *m = msg; - int activity_id; ++ /* XXX This function is broken out from mail_msg_unref() ++ * only for the benefit of op_status_exec() below. */ ++ ++ if (mail_msg->cancel != NULL) { ++ camel_operation_mute (mail_msg->cancel); ++ camel_operation_unref (mail_msg->cancel); ++ } ++ ++ camel_exception_clear (&mail_msg->ex); ++ g_slice_free (MailMsgPrivate, mail_msg->priv); ++ g_slice_free1 (mail_msg->info->size, mail_msg); ++} ++ ++gpointer ++mail_msg_ref (gpointer msg) ++{ + MailMsg *mail_msg = msg; + + g_return_val_if_fail (mail_msg != NULL, msg); @@ -5227,18 +5243,13 @@ - if (m->cancel) { - camel_operation_mute(m->cancel); - camel_operation_unref(m->cancel); -+ if (mail_msg->cancel) { -+ camel_operation_mute (mail_msg->cancel); -+ camel_operation_unref (mail_msg->cancel); - } - +- } +- - camel_exception_clear(&m->ex); - /*g_free(m->priv->what);*/ - g_free(m->priv); - g_free(m); -+ camel_exception_clear (&mail_msg->ex); -+ g_slice_free (MailMsgPrivate, mail_msg->priv); -+ g_slice_free1 (mail_msg->info->size, mail_msg); ++ mail_msg_free (mail_msg); if (activity_id != 0) - mail_async_event_emit(mail_async_event, MAIL_ASYNC_GUI, (MailAsyncFunc) end_event_callback, @@ -5250,7 +5261,7 @@ } /* hash table of ops->dialogue of active errors */ -@@ -244,9 +269,10 @@ static void error_response(GtkObject *o, +@@ -244,9 +278,10 @@ static void error_response(GtkObject *o, gtk_widget_destroy((GtkWidget *)o); } @@ -5263,7 +5274,7 @@ char *what; GtkDialog *gd; -@@ -271,27 +297,27 @@ void mail_msg_check_error(void *msg) +@@ -271,27 +306,27 @@ void mail_msg_check_error(void *msg) /* check to see if we have dialogue already running for this operation */ /* we key on the operation pointer, which is at least accurate enough for the operation type, although it could be on a different object. */ @@ -5298,7 +5309,7 @@ MAIL_MT_LOCK(mail_msg_lock); m = g_hash_table_lookup(mail_msg_active_table, GINT_TO_POINTER(msgid)); -@@ -304,13 +330,12 @@ void mail_msg_cancel(unsigned int msgid) +@@ -304,13 +339,12 @@ void mail_msg_cancel(unsigned int msgid) /* waits for a message to be finished processing (freed) @@ -5315,7 +5326,7 @@ MAIL_MT_LOCK(mail_msg_lock); m = g_hash_table_lookup(mail_msg_active_table, GINT_TO_POINTER(msgid)); while (m) { -@@ -347,9 +372,7 @@ int mail_msg_active(unsigned int msgid) +@@ -347,9 +381,7 @@ int mail_msg_active(unsigned int msgid) void mail_msg_wait_all(void) { @@ -5326,7 +5337,7 @@ MAIL_MT_LOCK(mail_msg_lock); while (g_hash_table_size(mail_msg_active_table) > 0) { MAIL_MT_UNLOCK(mail_msg_lock); -@@ -367,294 +390,239 @@ void mail_msg_wait_all(void) +@@ -367,294 +399,239 @@ void mail_msg_wait_all(void) } /* **************************************** */ @@ -5337,10 +5348,10 @@ - GDestroyNotify func; - void *data; -}; +- +-static EDList cancel_hook_list = E_DLIST_INITIALISER(cancel_hook_list); +static GHookList cancel_hook_list; --static EDList cancel_hook_list = E_DLIST_INITIALISER(cancel_hook_list); -- -void *mail_cancel_hook_add(GDestroyNotify func, void *data) +GHook * +mail_cancel_hook_add (GHookFunc func, gpointer data) @@ -5454,10 +5465,12 @@ { - EMsgPort *port = (EMsgPort *)d; - mail_msg_t *m; -- -- while (( m = (mail_msg_t *)e_msgport_get(port))) { + MailMsg *msg; +- while (( m = (mail_msg_t *)e_msgport_get(port))) { ++ g_assert (main_loop_queue != NULL); ++ g_assert (msg_reply_queue != NULL); + -#ifdef MALLOC_CHECK - checkmem(m); - checkmem(m->cancel); @@ -5469,9 +5482,7 @@ - fprintf(log, "%p: Replied to GUI thread (exception `%s'\n", m, - camel_exception_get_description(&m->ex)?camel_exception_get_description(&m->ex):"None"); -#endif -+ g_assert (main_loop_queue != NULL); -+ g_assert (msg_reply_queue != NULL); - +- - if (m->ops->reply_msg) - m->ops->reply_msg(m); - mail_msg_check_error(m); @@ -5632,15 +5643,15 @@ +mail_msg_compare (const MailMsg *msg1, const MailMsg *msg2) { - mail_msg_t *m = (mail_msg_t *)msg; -- ++ gint priority1 = msg1->priority; ++ gint priority2 = msg2->priority; + -#ifdef MALLOC_CHECK - checkmem(m); - checkmem(m->cancel); - checkmem(m->priv); -#endif -+ gint priority1 = msg1->priority; -+ gint priority2 = msg2->priority; - +- - if (m->ops->describe_msg) { - char *text = m->ops->describe_msg(m, FALSE); + if (priority1 == priority2) @@ -5708,14 +5719,14 @@ + (GSourceFunc) mail_msg_idle_cb, NULL); + G_UNLOCK (idle_source_id); +} - -- g_io_channel_unref(mail_gui_channel); -- g_io_channel_unref(mail_gui_reply_channel); ++ +void +mail_msg_unordered_push (gpointer msg) +{ + static GOnce once = G_ONCE_INIT; -+ + +- g_io_channel_unref(mail_gui_channel); +- g_io_channel_unref(mail_gui_reply_channel); + g_once (&once, (GThreadFunc) create_thread_pool, GINT_TO_POINTER (10)); - e_msgport_destroy(mail_gui_port); @@ -5773,15 +5784,15 @@ - e_thread_set_reply_port(mail_thread_new, mail_gui_reply_port); - e_thread_set_queue_limit(mail_thread_new, 10); + static GOnce once = G_ONCE_INIT; ++ ++ g_once (&once, (GThreadFunc) create_thread_pool, GINT_TO_POINTER (1)); - mail_msg_active_table = g_hash_table_new(NULL, NULL); - mail_gui_thread = pthread_self(); -+ g_once (&once, (GThreadFunc) create_thread_pool, GINT_TO_POINTER (1)); - -- mail_async_event = mail_async_event_new(); + g_thread_pool_push ((GThreadPool *) once.retval, msg, NULL); +} -+ + +- mail_async_event = mail_async_event_new(); +gboolean +mail_in_main_thread (void) +{ @@ -5789,7 +5800,7 @@ } /* ********************************************************************** */ -@@ -665,7 +633,8 @@ static pthread_mutex_t status_lock = PTH +@@ -665,7 +642,8 @@ static pthread_mutex_t status_lock = PTH /* ********************************************************************** */ struct _proxy_msg { @@ -5799,7 +5810,7 @@ MailAsyncEvent *ea; mail_async_event_t type; -@@ -679,10 +648,8 @@ struct _proxy_msg { +@@ -679,10 +657,8 @@ struct _proxy_msg { }; static void @@ -5811,7 +5822,7 @@ m->thread = pthread_self(); m->have_thread = TRUE; m->func(m->o, m->event_data, m->data); -@@ -697,16 +664,17 @@ static int +@@ -697,16 +673,17 @@ static int idle_async_event(void *mm) { do_async_event(mm); @@ -5835,7 +5846,7 @@ }; MailAsyncEvent *mail_async_event_new(void) -@@ -723,10 +691,9 @@ int mail_async_event_emit(MailAsyncEvent +@@ -723,10 +700,9 @@ int mail_async_event_emit(MailAsyncEvent { struct _proxy_msg *m; int id; @@ -5847,7 +5858,7 @@ m->func = func; m->o = o; m->event_data = event_data; -@@ -735,7 +702,7 @@ int mail_async_event_emit(MailAsyncEvent +@@ -735,7 +711,7 @@ int mail_async_event_emit(MailAsyncEvent m->type = type; m->have_thread = FALSE; @@ -5856,7 +5867,7 @@ g_mutex_lock(ea->lock); ea->tasks = g_slist_prepend(ea->tasks, m); g_mutex_unlock(ea->lock); -@@ -743,12 +710,12 @@ int mail_async_event_emit(MailAsyncEvent +@@ -743,12 +719,12 @@ int mail_async_event_emit(MailAsyncEvent /* We use an idle function instead of our own message port only because the gui message ports's notification buffer might overflow and deadlock us */ if (type == MAIL_ASYNC_GUI) { @@ -5872,7 +5883,7 @@ return id; } -@@ -762,7 +729,7 @@ int mail_async_event_destroy(MailAsyncEv +@@ -762,7 +738,7 @@ int mail_async_event_destroy(MailAsyncEv g_mutex_lock(ea->lock); while (ea->tasks) { m = ea->tasks->data; @@ -5881,7 +5892,7 @@ if (m->have_thread && pthread_equal(m->thread, thread)) { g_warning("Destroying async event from inside an event, returning EDEADLK"); g_mutex_unlock(ea->lock); -@@ -784,17 +751,18 @@ int mail_async_event_destroy(MailAsyncEv +@@ -784,17 +760,18 @@ int mail_async_event_destroy(MailAsyncEv /* ********************************************************************** */ struct _call_msg { @@ -5903,7 +5914,7 @@ void *p1, *p2, *p3, *p4, *p5; int i1; va_list ap; -@@ -842,45 +810,47 @@ do_call(struct _mail_msg *mm) +@@ -842,45 +819,47 @@ do_call(struct _mail_msg *mm) m->ret = m->func(p1, p2, i1, p3, p4, p5); break; } @@ -5970,7 +5981,7 @@ return ret; } -@@ -889,40 +859,42 @@ void *mail_call_main(mail_call_t type, M +@@ -889,40 +868,42 @@ void *mail_call_main(mail_call_t type, M /* locked via status_lock */ static int busy_state; @@ -6025,7 +6036,7 @@ } MAIL_MT_UNLOCK(status_lock); } -@@ -930,7 +902,7 @@ void mail_disable_stop(void) +@@ -930,7 +911,7 @@ void mail_disable_stop(void) /* ******************************************************************************** */ struct _op_status_msg { @@ -6034,7 +6045,7 @@ struct _CamelOperation *op; char *what; -@@ -938,16 +910,16 @@ struct _op_status_msg { +@@ -938,16 +919,16 @@ struct _op_status_msg { void *data; }; @@ -6056,7 +6067,7 @@ MAIL_MT_LOCK (mail_msg_lock); -@@ -986,8 +958,8 @@ static void do_op_status(struct _mail_ms +@@ -986,8 +967,8 @@ static void do_op_status(struct _mail_ms progress_icon = e_icon_factory_get_icon ("stock_mail-unread", E_ICON_SIZE_MENU); MAIL_MT_UNLOCK (mail_msg_lock); @@ -6067,7 +6078,20 @@ /* uncommenting because message is not very useful for a user, see bug 271734*/ else { what = g_strdup(""); -@@ -1021,18 +993,17 @@ static void do_op_status(struct _mail_ms +@@ -1001,11 +982,7 @@ static void do_op_status(struct _mail_ms + MAIL_MT_LOCK (mail_msg_lock); + if (data->activity_state == 3) { + MAIL_MT_UNLOCK (mail_msg_lock); +- if (msg->cancel) +- camel_operation_unref (msg->cancel); +- camel_exception_clear (&msg->ex); +- g_free (msg->priv); +- g_free (msg); ++ mail_msg_free (msg); + } else { + data->activity_state = 2; + MAIL_MT_UNLOCK (mail_msg_lock); +@@ -1021,18 +998,17 @@ static void do_op_status(struct _mail_ms } static void @@ -6093,7 +6117,7 @@ }; static void -@@ -1042,7 +1013,7 @@ mail_operation_status (struct _CamelOper +@@ -1042,7 +1018,7 @@ mail_operation_status (struct _CamelOper d(printf("got operation statys: %s %d%%\n", what, pc)); @@ -6102,7 +6126,7 @@ m->op = op; m->what = g_strdup(what); switch (pc) { -@@ -1055,7 +1026,7 @@ mail_operation_status (struct _CamelOper +@@ -1055,7 +1031,7 @@ mail_operation_status (struct _CamelOper } m->pc = pc; m->data = data; @@ -6112,7 +6136,7 @@ /* ******************** */ --- evolution-2.10.2/plugins/folder-unsubscribe/folder-unsubscribe.c.kill-ethread 2007-04-09 09:09:11.000000000 -0400 -+++ evolution-2.10.2/plugins/folder-unsubscribe/folder-unsubscribe.c 2007-06-06 13:02:25.000000000 -0400 ++++ evolution-2.10.2/plugins/folder-unsubscribe/folder-unsubscribe.c 2007-06-27 14:29:23.000000000 -0400 @@ -44,32 +44,30 @@ void org_gnome_mail_folder_unsubscribe ( @@ -6193,7 +6217,7 @@ + mail_msg_unordered_push (unsub); } --- evolution-2.10.2/plugins/mark-all-read/mark-all-read.c.kill-ethread 2007-05-27 14:21:10.000000000 -0400 -+++ evolution-2.10.2/plugins/mark-all-read/mark-all-read.c 2007-06-06 13:02:25.000000000 -0400 ++++ evolution-2.10.2/plugins/mark-all-read/mark-all-read.c 2007-06-27 14:29:23.000000000 -0400 @@ -44,7 +44,7 @@ org_gnome_mark_all_read (EPlugin *ep, EM return; } @@ -6204,7 +6228,7 @@ static void --- evolution-2.10.2/plugins/exchange-operations/exchange-folder.c.kill-ethread 2007-05-25 02:43:33.000000000 -0400 -+++ evolution-2.10.2/plugins/exchange-operations/exchange-folder.c 2007-06-06 13:02:25.000000000 -0400 ++++ evolution-2.10.2/plugins/exchange-operations/exchange-folder.c 2007-06-27 14:29:23.000000000 -0400 @@ -140,7 +140,7 @@ org_gnome_exchange_folder_inbox_unsubscr inbox_physical_uri = e_folder_get_physical_uri (inbox); @@ -6215,7 +6239,7 @@ } --- evolution-2.10.2/plugins/save-attachments/save-attachments.c.kill-ethread 2007-04-09 09:09:15.000000000 -0400 -+++ evolution-2.10.2/plugins/save-attachments/save-attachments.c 2007-06-06 13:02:25.000000000 -0400 ++++ evolution-2.10.2/plugins/save-attachments/save-attachments.c 2007-06-27 14:29:23.000000000 -0400 @@ -407,5 +407,5 @@ org_gnome_save_attachments_save(EPlugin camel_object_ref(data->folder); data->uid = g_strdup(target->uids->pdata[0]); @@ -6224,7 +6248,7 @@ + mail_get_message(data->folder, data->uid, save_got_message, data, mail_msg_unordered_push); } --- evolution-2.10.2/plugins/mailing-list-actions/mailing-list-actions.c.kill-ethread 2007-04-09 09:09:14.000000000 -0400 -+++ evolution-2.10.2/plugins/mailing-list-actions/mailing-list-actions.c 2007-06-06 13:02:25.000000000 -0400 ++++ evolution-2.10.2/plugins/mailing-list-actions/mailing-list-actions.c 2007-06-27 14:29:23.000000000 -0400 @@ -89,7 +89,7 @@ void emla_list_action (EPlugin *item, EM data->uri = strdup (sel->uri); @@ -6235,7 +6259,7 @@ void emla_list_action_do (CamelFolder *folder, const char *uid, CamelMimeMessage *msg, void *data) --- evolution-2.10.2/plugins/groupwise-features/share-folder-common.c.kill-ethread 2007-04-09 09:09:12.000000000 -0400 -+++ evolution-2.10.2/plugins/groupwise-features/share-folder-common.c 2007-06-06 13:02:25.000000000 -0400 ++++ evolution-2.10.2/plugins/groupwise-features/share-folder-common.c 2007-06-27 14:29:23.000000000 -0400 @@ -121,7 +121,7 @@ shared_folder_abort (EPlugin *ep, EConfi } @@ -6334,7 +6358,7 @@ return id; } --- evolution-2.10.2/calendar/gui/alarm-notify/alarm-notify.h.kill-ethread 2007-04-09 09:10:29.000000000 -0400 -+++ evolution-2.10.2/calendar/gui/alarm-notify/alarm-notify.h 2007-06-06 13:02:25.000000000 -0400 ++++ evolution-2.10.2/calendar/gui/alarm-notify/alarm-notify.h 2007-06-27 14:29:23.000000000 -0400 @@ -39,19 +39,6 @@ typedef struct _AlarmNotifyClass AlarmNo typedef struct _AlarmNotifyPrivate AlarmNotifyPrivate; @@ -6356,7 +6380,7 @@ BonoboObject object; --- evolution-2.10.2/calendar/gui/alarm-notify/alarm-notify.c.kill-ethread 2007-04-09 09:10:29.000000000 -0400 -+++ evolution-2.10.2/calendar/gui/alarm-notify/alarm-notify.c 2007-06-06 13:02:25.000000000 -0400 ++++ evolution-2.10.2/calendar/gui/alarm-notify/alarm-notify.c 2007-06-27 14:29:23.000000000 -0400 @@ -45,10 +45,6 @@ struct _AlarmNotifyPrivate { GMutex *mutex; }; @@ -6470,7 +6494,7 @@ static void --- evolution-2.10.2/calendar/gui/alarm-notify/alarm-queue.c.kill-ethread 2007-04-09 09:10:29.000000000 -0400 -+++ evolution-2.10.2/calendar/gui/alarm-notify/alarm-queue.c 2007-06-06 13:02:25.000000000 -0400 ++++ evolution-2.10.2/calendar/gui/alarm-notify/alarm-queue.c 2007-06-27 14:29:23.000000000 -0400 @@ -115,9 +115,6 @@ static int tray_blink_id = -1; static int tray_blink_state = FALSE; static AlarmNotify *an; diff --git a/evolution.spec b/evolution.spec index 9328fe1..17e7285 100644 --- a/evolution.spec +++ b/evolution.spec @@ -47,7 +47,7 @@ Name: evolution Version: 2.10.2 -Release: 2%{?dist} +Release: 3%{?dist} License: GPL Group: Applications/Productivity Summary: GNOME's next-generation groupware suite @@ -747,6 +747,9 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/evolution/%{evo_major}/libmenus.so %changelog +* Wed Jun 27 2007 Matthew Barnes - 2.10.2-3.fc7 +- Revise patch for GNOME bug #362638 to fix RH bug #245289 (frequent hangs). + * Wed Jun 06 2007 Matthew Barnes - 2.10.2-2.fc7 - Revise patch for GNOME bug #362638 to fix RH bug #240507 (hang on exit). From 605188aa23e23154dd9160bfe938b99a1fc7bf4a Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Mon, 2 Jul 2007 18:18:26 +0000 Subject: [PATCH 06/19] - Update to 2.10.3 --- .cvsignore | 2 +- evolution.spec | 7 +++++-- sources | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.cvsignore b/.cvsignore index 42eccce..b094b52 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -evolution-2.10.2.tar.bz2 +evolution-2.10.3.tar.bz2 diff --git a/evolution.spec b/evolution.spec index 17e7285..d63337a 100644 --- a/evolution.spec +++ b/evolution.spec @@ -46,8 +46,8 @@ ### Abstract ### Name: evolution -Version: 2.10.2 -Release: 3%{?dist} +Version: 2.10.3 +Release: 1%{?dist} License: GPL Group: Applications/Productivity Summary: GNOME's next-generation groupware suite @@ -747,6 +747,9 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/evolution/%{evo_major}/libmenus.so %changelog +* Mon Jul 02 2007 Matthew Barnes - 2.10.3-1.fc7 +- Update to 2.10.3 + * Wed Jun 27 2007 Matthew Barnes - 2.10.2-3.fc7 - Revise patch for GNOME bug #362638 to fix RH bug #245289 (frequent hangs). diff --git a/sources b/sources index 838573d..f79c55e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -4b495be7f5e146ce7b5807134586336e evolution-2.10.2.tar.bz2 +09cc60b037849b3c9b34961eb7da217f evolution-2.10.3.tar.bz2 From d8f267efca930d38dc8634a3076003fc14c0e5d4 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sat, 14 Jul 2007 19:48:34 +0000 Subject: [PATCH 07/19] - Revise patch for GNOME bug #362638 to fix RH bug #245695 (crash on alert). --- evolution-2.8.1-kill-ethread.patch | 2 +- evolution.spec | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/evolution-2.8.1-kill-ethread.patch b/evolution-2.8.1-kill-ethread.patch index 714ea3b..f0c9cf1 100644 --- a/evolution-2.8.1-kill-ethread.patch +++ b/evolution-2.8.1-kill-ethread.patch @@ -4982,7 +4982,7 @@ - extern EMsgPort *mail_gui_port2; - - e_msgport_put(mail_gui_port2, (EMsg *)m); -+ mail_msg_main_loop_push(m); ++ mail_msg_main_loop_push(mail_msg_ref (m)); } if (cancel) { diff --git a/evolution.spec b/evolution.spec index d63337a..7856330 100644 --- a/evolution.spec +++ b/evolution.spec @@ -47,7 +47,7 @@ Name: evolution Version: 2.10.3 -Release: 1%{?dist} +Release: 2%{?dist} License: GPL Group: Applications/Productivity Summary: GNOME's next-generation groupware suite @@ -747,6 +747,9 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/evolution/%{evo_major}/libmenus.so %changelog +* Sat Jul 14 2007 Matthew Barnes - 2.10.3-2.fc7 +- Revise patch for GNOME bug #362638 to fix RH bug #245695 (crash on alert). + * Mon Jul 02 2007 Matthew Barnes - 2.10.3-1.fc7 - Update to 2.10.3 From 68c2257bfa46ad45d851207605fb0c3b89acadd2 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Fri, 27 Jul 2007 14:57:57 +0000 Subject: [PATCH 08/19] - Add patch for GNOME bug #380534 (clarify version requirements). --- evolution-2.10.3-version-checks.patch | 347 ++++++++++++++++++++++++++ evolution.spec | 9 +- 2 files changed, 355 insertions(+), 1 deletion(-) create mode 100644 evolution-2.10.3-version-checks.patch diff --git a/evolution-2.10.3-version-checks.patch b/evolution-2.10.3-version-checks.patch new file mode 100644 index 0000000..9ea0f56 --- /dev/null +++ b/evolution-2.10.3-version-checks.patch @@ -0,0 +1,347 @@ +--- evolution-2.10.3/a11y/Makefile.am.version-checks 2007-04-09 09:10:38.000000000 -0400 ++++ evolution-2.10.3/a11y/Makefile.am 2007-07-27 10:45:41.000000000 -0400 +@@ -31,4 +31,4 @@ libevolution_a11y_la_LIBADD = \ + e-text/libgal-a11y-etext.la \ + e-table/libgal-a11y-etable.la \ + $(top_builddir)/e-util/libeutil.la \ +- $(EXTRA_GNOME_LIBS) ++ $(GNOME_PLATFORM_LIBS) +--- evolution-2.10.3/a11y/e-text/Makefile.am.version-checks 2007-04-09 09:10:36.000000000 -0400 ++++ evolution-2.10.3/a11y/e-text/Makefile.am 2007-07-27 10:45:41.000000000 -0400 +@@ -1,7 +1,7 @@ + INCLUDES = \ + -I$(top_srcdir) \ + -I$(top_srcdir)/widgets \ +- $(EXTRA_GNOME_CFLAGS) \ ++ $(GNOME_PLATFORM_CFLAGS) \ + -DG_LOG_DOMAIN=\"e-text\" + + noinst_LTLIBRARIES = libgal-a11y-etext.la +--- evolution-2.10.3/a11y/e-table/Makefile.am.version-checks 2007-04-09 09:10:38.000000000 -0400 ++++ evolution-2.10.3/a11y/e-table/Makefile.am 2007-07-27 10:45:41.000000000 -0400 +@@ -1,7 +1,7 @@ + INCLUDES = \ + -I$(top_srcdir) \ + -I$(top_srcdir)/widgets \ +- $(EXTRA_GNOME_CFLAGS) \ ++ $(GNOME_PLATFORM_CFLAGS) \ + -DG_LOG_DOMAIN=\"e-table\" + + noinst_LTLIBRARIES = libgal-a11y-etable.la +--- evolution-2.10.3/configure.in.version-checks 2007-07-27 10:45:06.000000000 -0400 ++++ evolution-2.10.3/configure.in 2007-07-27 10:55:54.000000000 -0400 +@@ -4,6 +4,34 @@ AC_PREREQ(2.52) + AC_INIT(evolution, 2.10.3, http://bugzilla.gnome.org/enter_bug.cgi?product=Evolution) + AC_CONFIG_SRCDIR(README) + ++# Some requirements have versioned package names ++# XXX In the spirit of getting rid of versioned ++# files, can we drop these suffixes? ++EDS_PACKAGE=1.2 ++GTKHTML_PACKAGE=3.14 ++ ++# Required Packages ++m4_define([gtk_minimum_version], [2.10.0]) ++m4_define([eds_minimum_version], [1.9.4]) ++m4_define([gnome_icon_theme_minimum_version], [1.2.0]) ++m4_define([gnome_vfs_minimum_version], [2.4.0]) ++m4_define([libbonoboui_minimum_version], [2.4.2]) ++m4_define([libgtkhtml_minimum_version], [3.14.0]) ++m4_define([gconf_minimum_version], [2.0.0]) # XXX Just a Guess ++m4_define([libglade_minimum_version], [2.0.0]) # XXX Just a Guess ++m4_define([libgnomecanvas_minimum_version], [2.0.0]) # XXX Just a Guess ++m4_define([libgnomeui_minimum_version], [2.0.0]) # XXX Just a Guess ++m4_define([libxml_minimum_version], [2.0.0]) # XXX Just a Guess ++ ++# Optional Packages ++# ++# FIXME Minimum versions for dbus-glib-1 and libnm_glib ? ++# FIXME Move audio-inline plugin from gstreamer-0.8 to 0.10 ? ++# ++m4_define([dbus_minimum_version], [1.0.0]) ++m4_define([hal_minimum_version], [0.5.4]) ++m4_define([libnotify_minimum_version], [0.3.0]) ++m4_define([gnome_pilot_minimum_version], [2.0.0]) # XXX Just a Guess + + # GNOME Documentation + GNOME_DOC_INIT +@@ -127,6 +155,27 @@ AM_CONDITIONAL(OS_WIN32, [test $os_win32 + AC_SUBST(NO_UNDEFINED) + AC_SUBST(SOEXT) + ++# Check for base dependencies early. ++PKG_CHECK_MODULES(GNOME_PLATFORM, ++ [gtk+-2.0 >= gtk_minimum_version ++ gconf-2.0 >= gconf_minimum_version ++ gnome-vfs-2.0 >= gnome_vfs_minimum_version ++ libbonoboui-2.0 >= libbonoboui_minimum_version ++ libglade-2.0 >= libglade_minimum_version ++ libgnomecanvas-2.0 >= libgnomecanvas_minimum_version ++ libgnomeui-2.0 >= libgnomeui_minimum_version ++ libxml-2.0 >= libxml_minimum_version]) ++AC_SUBST(GNOME_PLATFORM_CFLAGS) ++AC_SUBST(GNOME_PLATFORM_LIBS) ++ ++PKG_CHECK_MODULES(EVOLUTION_DATA_SERVER, ++ [libebook-$EDS_PACKAGE >= eds_minimum_version ++ libecal-$EDS_PACKAGE >= eds_minimum_version ++ libedataserver-$EDS_PACKAGE >= eds_minimum_version ++ libedataserverui-$EDS_PACKAGE >= eds_minimum_version ++ libegroupwise-$EDS_PACKAGE >= eds_minimum_version ++ libexchange-storage-$EDS_PACKAGE >= eds_minimum_version]) ++ + dnl ****************************** + dnl iconv checking + dnl ****************************** +@@ -403,7 +452,7 @@ AC_CHECK_FUNCS(statfs) + dnl ************************************************** + dnl * Gnome Icon Theme + dnl ************************************************** +-PKG_CHECK_MODULES(GIT, gnome-icon-theme >= 1.2.0) ++PKG_CHECK_MODULES(GIT, gnome-icon-theme >= gnome_icon_theme_minimum_version) + + dnl ************************************************** + dnl * Accessibility support +@@ -563,7 +612,8 @@ AC_CHECK_FUNCS(regexec,,[AC_CHECK_LIB(re + [AC_MSG_ERROR([No regex library found])])]) + AC_SUBST(REGEX_LIBS) + +-PKG_CHECK_MODULES(GTKHTML, libgtkhtml-3.14) ++# XXX Drop the version from the package name? ++PKG_CHECK_MODULES(GTKHTML, libgtkhtml-3.14 >= libgtkhtml_minimum_version) + AC_SUBST(GTKHTML_CFLAGS) + AC_SUBST(GTKHTML_LIBS) + GTKHTML_DATADIR=`$PKG_CONFIG --variable gtkhtml_datadir libgtkhtml-3.14` +@@ -580,7 +630,7 @@ dnl ****************************** + AC_ARG_ENABLE(pilot-conduits, + [ --enable-pilot-conduits=[no/yes] Enable support for building pilot conduits.],,enable_pilot_conduits=no) + if test "x$enable_pilot_conduits" = "xyes"; then +- PKG_CHECK_MODULES(GNOME_PILOT, gnome-pilot-2.0) ++ PKG_CHECK_MODULES(GNOME_PILOT, gnome-pilot-2.0 >= gnome_pilot_minimum_version) + + CFLAGS_save="$CFLAGS" + CFLAGS="$CFLAGS $GNOME_PILOT_CFLAGS" +@@ -1178,27 +1228,12 @@ fi + + dnl --- Required version numbers + +-GTKHTML_REQUIRED=3.14.0 +-GTKHTML_PACKAGE=3.14 +-EDS_REQUIRED=1.9.4 +-EDS_PACKAGE=1.2 +-BONOBOUI_REQUIRED=2.4.2 +-GNOME_VFS_REQUIRED=2.4 +- +-AC_SUBST(GTKHTML_REQUIRED) +-AC_SUBST(GTKHTML_PACKAGE) +-AC_SUBST(EDS_REQUIRED) +-AC_SUBST(EDS_PACKAGE) ++BONOBOUI_REQUIRED=libbonoboui_minimum_version + AC_SUBST(BONOBOUI_REQUIRED) +-AC_SUBST(GNOME_VFS_REQUIRED) + + dnl --- Flags to get all the GNOME stuff + +-FULL_GNOME_DEPS="glib-2.0 libbonoboui-2.0 >= $BONOBOUI_REQUIRED gnome-vfs-2.0 >= $GNOME_VFS_REQUIRED libgnomeui-2.0 libglade-2.0 libgnomecanvas-2.0 libxml-2.0 gconf-2.0" +- +-EVO_SET_COMPILE_FLAGS(GNOME_FULL, $FULL_GNOME_DEPS) +-AC_SUBST(GNOME_FULL_CFLAGS) +-AC_SUBST(GNOME_FULL_LIBS) ++FULL_GNOME_DEPS="libbonoboui-2.0 gnome-vfs-2.0 libgnomeui-2.0 libglade-2.0" + + CPPFLAGS_save="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS `$PKG_CONFIG --cflags-only-I libgnomeui-2.0`" +@@ -1206,11 +1241,7 @@ AC_CHECK_HEADERS(libgnomeui/gnome-icon-l + AC_CHECK_HEADERS(libgnomeui/gnome-thumbnail.h) + CPPFLAGS="$CPPFLAGS_save" + +-PKG_CHECK_MODULES(EXTRA_GNOME, libgnomeprint-2.2 >= 2.7.0 libgnomeprintui-2.2 >= 2.2.1 $FULL_GNOME_DEPS) +-AC_SUBST(EXTRA_GNOME_LIBS) +-AC_SUBST(EXTRA_GNOME_CFLAGS) +- +-PKG_CHECK_MODULES(HAL, hal >= 0.5.4, HAVE_HAL="yes", HAVE_HAL="no") ++PKG_CHECK_MODULES(HAL, hal >= hal_minimum_version, HAVE_HAL="yes", HAVE_HAL="no") + if test "x$HAVE_HAL" = "xyes"; then + AC_DEFINE(HAVE_HAL, 1, [hal available]) + HAL_REQUIREMENT="hal" +@@ -1226,7 +1257,7 @@ EVO_SET_COMPILE_FLAGS(CAMEL, camel-provi + AC_SUBST(CAMEL_CFLAGS) + AC_SUBST(CAMEL_LIBS) + +-EVO_SET_COMPILE_FLAGS(CAMEL_GROUPWISE, camel-provider-$EDS_PACKAGE libedataserver-$EDS_PACKAGE >= $EDS_REQUIRED libegroupwise-$EDS_PACKAGE >= $EDS_REQUIRED) ++EVO_SET_COMPILE_FLAGS(CAMEL_GROUPWISE, camel-provider-$EDS_PACKAGE libedataserver-$EDS_PACKAGE libegroupwise-$EDS_PACKAGE) + AC_SUBST(CAMEL_GROUPWISE_CFLAGS) + AC_SUBST(CAMEL_GROUPWISE_LIBS) + +@@ -1239,33 +1270,33 @@ else + fi + fi + +-EVO_SET_COMPILE_FLAGS(CERT_UI, libedataserverui-$EDS_PACKAGE >= $EDS_REQUIRED libglade-2.0 gtk+-2.0 glib-2.0 gobject-2.0 gthread-2.0, ++EVO_SET_COMPILE_FLAGS(CERT_UI, libedataserverui-$EDS_PACKAGE libglade-2.0 gthread-2.0, + $MANUAL_NSS_CFLAGS $MOZILLA_NSS_CFLAGS, + $MOZILLA_L_DIR $MANUAL_NSS_LIBS $MOZILLA_NSS_LIBS) + AC_SUBST(CERT_UI_CFLAGS) + AC_SUBST(CERT_UI_LIBS) + +-EVO_SET_COMPILE_FLAGS(E_NAME, libgnomeui-2.0 libbonoboui-2.0 >= $BONOBOUI_REQUIRED) ++EVO_SET_COMPILE_FLAGS(E_NAME, libgnomeui-2.0 libbonoboui-2.0) + AC_SUBST(E_NAME_CFLAGS) + AC_SUBST(E_NAME_LIBS) + +-EVO_SET_COMPILE_FLAGS(E_UTIL, gthread-2.0 gconf-2.0 libxml-2.0 gtk+-unix-print-2.0 libbonoboui-2.0 >= $BONOBOUI_REQUIRED libglade-2.0 libgnomeui-2.0 libgnome-2.0 libgnomecanvas-2.0 libgnomeprintui-2.2 libedataserver-$EDS_PACKAGE >= $EDS_REQUIRED libedataserverui-$EDS_PACKAGE >= $EDS_REQUIRED $mozilla_nspr $mono_package, $THREADS_CFLAGS $MANUAL_NSPR_CFLAGS, $THREADS_LIBS $MANUAL_NSPR_LIBS) ++EVO_SET_COMPILE_FLAGS(E_UTIL, libbonoboui-2.0 libglade-2.0 libgnomeui-2.0 libedataserver-$EDS_PACKAGE libedataserverui-$EDS_PACKAGE $mozilla_nspr $mono_package, $THREADS_CFLAGS $MANUAL_NSPR_CFLAGS, $THREADS_LIBS $MANUAL_NSPR_LIBS) + AC_SUBST(E_UTIL_CFLAGS) + AC_SUBST(E_UTIL_LIBS) + +-EVO_SET_COMPILE_FLAGS(TZDIALOG, libecal-$EDS_PACKAGE >= $EDS_REQUIRED, $GNOME_FULL_CFLAGS, $GNOME_FULL_LIBS) ++EVO_SET_COMPILE_FLAGS(TZDIALOG, libecal-$EDS_PACKAGE, $GNOME_PLATFORM_CFLAGS, $GNOME_PLATFORM_LIBS) + AC_SUBST(TZDIALOG_CFLAGS) + AC_SUBST(TZDIALOG_LIBS) + +-EVO_SET_COMPILE_FLAGS(E_WIDGETS, glib-2.0 libbonoboui-2.0 >= $BONOBOUI_REQUIRED gnome-vfs-2.0 gnome-vfs-module-2.0 libgnomeui-2.0 libglade-2.0 libgnomecanvas-2.0 libxml-2.0 gconf-2.0 libedataserverui-$EDS_PACKAGE libedataserver-$EDS_PACKAGE >= $EDS_REQUIRED) ++EVO_SET_COMPILE_FLAGS(E_WIDGETS, libbonoboui-2.0 gnome-vfs-module-2.0 libgnomeui-2.0 libglade-2.0 libedataserverui-$EDS_PACKAGE libedataserver-$EDS_PACKAGE) + AC_SUBST(E_WIDGETS_CFLAGS) + AC_SUBST(E_WIDGETS_LIBS) + +-EVO_SET_COMPILE_FLAGS(IMPORTERS, libedataserverui-$EDS_PACKAGE >= $EDS_REQUIRED camel-provider-$EDS_PACKAGE camel-$EDS_PACKAGE gconf-2.0 libglade-2.0 libbonoboui-2.0 >= $BONOBOUI_REQUIRED libgnomeui-2.0 libebook-$EDS_PACKAGE >= $EDS_REQUIRED) ++EVO_SET_COMPILE_FLAGS(IMPORTERS, libedataserverui-$EDS_PACKAGE camel-provider-$EDS_PACKAGE camel-$EDS_PACKAGE libglade-2.0 libbonoboui-2.0 libgnomeui-2.0 libebook-$EDS_PACKAGE) + AC_SUBST(IMPORTERS_CFLAGS) + AC_SUBST(IMPORTERS_LIBS) + +-EVO_SET_COMPILE_FLAGS(LIBFILTER, libgnome-2.0 libgnomeui-2.0 libglade-2.0 libxml-2.0 gconf-2.0 libedataserver-$EDS_PACKAGE >= $EDS_REQUIRED) ++EVO_SET_COMPILE_FLAGS(LIBFILTER, libgnomeui-2.0 libglade-2.0 libedataserver-$EDS_PACKAGE >= $EDS_REQUIRED) + AC_SUBST(LIBFILTER_CFLAGS) + AC_SUBST(LIBFILTER_LIBS) + +@@ -1292,14 +1323,14 @@ AM_CONDITIONAL(NM_SUPPORT_GLIB, test x$N + AM_CONDITIONAL(NM_SUPPORT, test x$NM_SUPPORT = xyes) + + +-EVO_SET_COMPILE_FLAGS(SHELL, libgnome-2.0 libgnomeui-2.0 libbonoboui-2.0 >= $BONOBOUI_REQUIRED libglade-2.0 gnome-vfs-2.0 libgtkhtml-$GTKHTML_PACKAGE >= $GTKHTML_REQUIRED $NM_SUPPORT_PACKAGES) ++EVO_SET_COMPILE_FLAGS(SHELL, libgnomeui-2.0 libbonoboui-2.0 libglade-2.0 gnome-vfs-2.0 libgtkhtml-$GTKHTML_PACKAGE $NM_SUPPORT_PACKAGES) + + AC_SUBST(SHELL_CFLAGS) + AC_SUBST(SHELL_LIBS) + + dnl --- evolution-addressbook flags + +-EVOLUTION_ADDRESSBOOK_DEPS="gconf-2.0 libbonoboui-2.0 >= $BONOBOUI_REQUIRED libglade-2.0 libgnomeui-2.0 libgnome-2.0 libgnomecanvas-2.0 gtk+-unix-print-2.0 gnome-vfs-2.0 libgnomeprintui-2.2 libgtkhtml-$GTKHTML_PACKAGE >= $GTKHTML_REQUIRED libebook-$EDS_PACKAGE >= $EDS_REQUIRED libedataserverui-$EDS_PACKAGE >= $EDS_REQUIRED camel-$EDS_PACKAGE" ++EVOLUTION_ADDRESSBOOK_DEPS="libbonoboui-2.0 libglade-2.0 libgnomeui-2.0 gnome-vfs-2.0 libgtkhtml-$GTKHTML_PACKAGE libebook-$EDS_PACKAGE libedataserverui-$EDS_PACKAGE camel-$EDS_PACKAGE" + + EVO_SET_COMPILE_FLAGS(EVOLUTION_ADDRESSBOOK, $EVOLUTION_ADDRESSBOOK_DEPS) + AC_SUBST(EVOLUTION_ADDRESSBOOK_CFLAGS) +@@ -1313,7 +1344,7 @@ fi + + LIBNOTIFY_CFLAGS= + LIBNOTIFY_LIBS= +-PKG_CHECK_MODULES(LIBNOTIFY, libnotify >= 0.3.0, HAVE_LIBNOTIFY="yes", HAVE_LIBNOTIFY="no") ++PKG_CHECK_MODULES(LIBNOTIFY, libnotify >= libnotify_minimum_version, HAVE_LIBNOTIFY="yes", HAVE_LIBNOTIFY="no") + if test "x$HAVE_LIBNOTIFY" = "xyes"; then + AC_DEFINE(HAVE_LIBNOTIFY, 1, [libnotify available]) + libnotify="libnotify" +@@ -1337,7 +1368,7 @@ EVO_SET_COMPILE_FLAGS(LIBSOUP, $LIBSOUP + AC_SUBST(LIBSOUP_CFLAGS) + AC_SUBST(LIBSOUP_LIBS) + +-EVO_SET_COMPILE_FLAGS(EVOLUTION_CALENDAR, libgnome-2.0 libgnomeui-2.0 libbonoboui-2.0 libglade-2.0 gnome-vfs-2.0 gtk+-unix-print-2.0 libgnomeprint-2.2 libgnomeprintui-2.2 gnome-vfs-module-2.0 libgtkhtml-$GTKHTML_PACKAGE >= $GTKHTML_REQUIRED libebook-$EDS_PACKAGE >= $EDS_REQUIRED libecal-$EDS_PACKAGE >= $EDS_REQUIRED libedataserverui-$EDS_PACKAGE >= $EDS_REQUIRED $HAL_REQUIREMENT $libnotify) ++EVO_SET_COMPILE_FLAGS(EVOLUTION_CALENDAR, libgnomeui-2.0 libbonoboui-2.0 libglade-2.0 gnome-vfs-module-2.0 libgtkhtml-$GTKHTML_PACKAGE libebook-$EDS_PACKAGE libecal-$EDS_PACKAGE libedataserverui-$EDS_PACKAGE $HAL_REQUIREMENT $libnotify) + AC_SUBST(EVOLUTION_CALENDAR_CFLAGS) + AC_SUBST(EVOLUTION_CALENDAR_LIBS) + +@@ -1349,7 +1380,7 @@ fi + + dnl --- evolution-mail flags + +-EVO_SET_COMPILE_FLAGS(EVOLUTION_MAIL, camel-provider-$EDS_PACKAGE libgnome-2.0 libgnomeui-2.0 libbonoboui-2.0 >= $BONOBOUI_REQUIRED libglade-2.0 gnome-vfs-module-2.0 libgnomeprint-2.2 libgnomeprintui-2.2 libgtkhtml-$GTKHTML_PACKAGE >= $GTKHTML_REQUIRED libxml-2.0 bonobo-activation-2.0 gthread-2.0 gconf-2.0 gtk+-unix-print-2.0 $mozilla_nss libebook-$EDS_PACKAGE >= $EDS_REQUIRED libedataserverui-$EDS_PACKAGE >= $EDS_REQUIRED) ++EVO_SET_COMPILE_FLAGS(EVOLUTION_MAIL, camel-provider-$EDS_PACKAGE libgnomeui-2.0 libbonoboui-2.0 libglade-2.0 gnome-vfs-module-2.0 libgtkhtml-$GTKHTML_PACKAGE bonobo-activation-2.0 $mozilla_nss libebook-$EDS_PACKAGE libedataserverui-$EDS_PACKAGE) + AC_SUBST(EVOLUTION_MAIL_CFLAGS) + AC_SUBST(EVOLUTION_MAIL_LIBS) + +@@ -1372,7 +1403,7 @@ fi + + dnl --- evolution-test flags + +-EVO_SET_COMPILE_FLAGS(EVOLUTION_TEST, libgnome-2.0 libgnomeui-2.0 libbonobo-2.0 libbonoboui-2.0 >= $BONOBOUI_REQUIRED) ++EVO_SET_COMPILE_FLAGS(EVOLUTION_TEST, libgnomeui-2.0 libbonoboui-2.0) + AC_SUBST(EVOLUTION_TEST_CFLAGS) + AC_SUBST(EVOLUTION_TEST_LIBS) + +@@ -1591,7 +1622,7 @@ if echo ${plugins_enabled} | grep "excha + dnl ************************************************** + dnl * Exchange Operations plugin + dnl ************************************************** +- EVO_SET_COMPILE_FLAGS(CAMEL_EXCHANGE, libbonoboui-2.0 >= $BONOBOUI_REQUIRED libglade-2.0 libgnomeprint-2.2 libgnomeprintui-2.2 gthread-2.0 gconf-2.0 camel-provider-$EDS_PACKAGE libebook-$EDS_PACKAGE >= $EDS_REQUIRED libedataserverui-$EDS_PACKAGE libexchange-storage-$EDS_PACKAGE >= $EDS_REQUIRED libecal-$EDS_PACKAGE) ++ EVO_SET_COMPILE_FLAGS(CAMEL_EXCHANGE, libbonoboui-2.0 libglade-2.0 gconf-2.0 camel-provider-$EDS_PACKAGE libebook-$EDS_PACKAGE libedataserverui-$EDS_PACKAGE libexchange-storage-$EDS_PACKAGE libecal-$EDS_PACKAGE) + AC_SUBST(CAMEL_EXCHANGE_CFLAGS) + AC_SUBST(CAMEL_EXCHANGE_LIBS) + else +--- evolution-2.10.3/widgets/misc/Makefile.am.version-checks 2007-04-09 09:10:24.000000000 -0400 ++++ evolution-2.10.3/widgets/misc/Makefile.am 2007-07-27 10:45:41.000000000 -0400 +@@ -10,7 +10,7 @@ INCLUDES = \ + -DEVOLUTION_GLADEDIR=\""$(gladedir)"\" \ + -DG_LOG_DOMAIN=__FILE__ \ + $(EVOLUTION_MAIL_CFLAGS) \ +- $(EXTRA_GNOME_CFLAGS) \ ++ $(GNOME_PLATFORM_CFLAGS) \ + $(ICONV_CFLAGS) + + +@@ -137,7 +137,7 @@ libemiscwidgets_la_LIBADD = $(top_buildd + $(top_builddir)/a11y/widgets/libevolution-widgets-a11y.la \ + $(top_builddir)/a11y/libevolution-a11y.la \ + $(CAMEL_LIBS) \ +- $(EXTRA_GNOME_LIBS) \ ++ $(GNOME_PLATFORM_LIBS) \ + $(ICONV_LIBS) + + libefilterbar_la_SOURCES = \ +--- evolution-2.10.3/widgets/table/Makefile.am.version-checks 2007-04-09 09:10:21.000000000 -0400 ++++ evolution-2.10.3/widgets/table/Makefile.am 2007-07-27 10:45:41.000000000 -0400 +@@ -13,7 +13,7 @@ INCLUDES = \ + -I$(top_srcdir) \ + -I$(top_srcdir)/widgets \ + $(E_WIDGETS_CFLAGS) \ +- $(EXTRA_GNOME_CFLAGS) \ ++ $(GNOME_PLATFORM_CFLAGS) \ + -DEVOLUTION_GLADEDIR=\"$(gladedir)\" \ + -DG_LOG_DOMAIN=\"e-table\" + +@@ -155,7 +155,7 @@ libetable_la_LIBADD = \ + $(top_builddir)/e-util/libeutil.la \ + $(top_builddir)/a11y/libevolution-a11y.la \ + $(E_WIDGETS_LIBS) \ +- $(EXTRA_GNOME_LIBS) ++ $(GNOME_PLATFORM_LIBS) + + icons = \ + add-col.xpm \ +--- evolution-2.10.3/widgets/text/Makefile.am.version-checks 2007-04-09 09:10:17.000000000 -0400 ++++ evolution-2.10.3/widgets/text/Makefile.am 2007-07-27 10:45:41.000000000 -0400 +@@ -5,7 +5,7 @@ endif + INCLUDES = \ + -I$(top_srcdir) \ + -I$(top_srcdir)/widgets \ +- $(EXTRA_GNOME_CFLAGS) \ ++ $(GNOME_PLATFORM_CFLAGS) \ + -DG_LOG_DOMAIN=\"e-text\" + + +@@ -44,5 +44,5 @@ libetext_la_LIBADD = \ + $(top_builddir)/e-util/libeutil.la \ + $(top_builddir)/a11y/libevolution-a11y.la \ + $(top_builddir)/widgets/table/libetable.la \ +- $(EXTRA_GNOME_LIBS) \ ++ $(GNOME_PLATFORM_LIBS) \ + $(REGEX_LIBS) +--- evolution-2.10.3/tools/Makefile.am.version-checks 2007-04-09 09:07:44.000000000 -0400 ++++ evolution-2.10.3/tools/Makefile.am 2007-07-27 10:45:41.000000000 -0400 +@@ -16,7 +16,7 @@ INCLUDES = \ + -DSYSCONFDIR=\""$(sysconfdir)"\" \ + -DDATADIR=\""$(datadir)"\" \ + -DLIBDIR=\""$(libdir)"\" \ +- $(GNOME_FULL_CFLAGS) ++ $(GNOME_PLATFORM_CFLAGS) + + EXTRA_DIST = verify-evolution-install.sh + diff --git a/evolution.spec b/evolution.spec index 7856330..a516a4b 100644 --- a/evolution.spec +++ b/evolution.spec @@ -47,7 +47,7 @@ Name: evolution Version: 2.10.3 -Release: 2%{?dist} +Release: 3%{?dist} License: GPL Group: Applications/Productivity Summary: GNOME's next-generation groupware suite @@ -170,6 +170,9 @@ Patch53: evolution-2.10.1-check-uri-before-strcmp.patch # RH bug #240147 / GNOME bug #335241 Patch54: evolution-2.10.1-send-recv-dialog.patch +# GNOME bug #380534 +Patch55: evolution-2.10.3-version-checks.patch + ## Dependencies ### Requires(post): GConf2 @@ -326,6 +329,7 @@ Development files needed for building things which link against evolution. %patch51 -p1 -b .en_CA-attribution-format %patch53 -p1 -b .check-uri-before-strcmp %patch54 -p1 -b .send-recv-dialog +%patch55 -p1 -b .version-checks mkdir -p krb5-fakeprefix/include mkdir -p krb5-fakeprefix/lib @@ -747,6 +751,9 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/evolution/%{evo_major}/libmenus.so %changelog +* Fri Jul 27 2007 Matthew Barnes - 2.10.3-3.fc7 +- Add patch for GNOME bug #380534 (clarify version requirements). + * Sat Jul 14 2007 Matthew Barnes - 2.10.3-2.fc7 - Revise patch for GNOME bug #362638 to fix RH bug #245695 (crash on alert). From a225c0caf77598ea669c226cf18c359a3f2753dd Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Thu, 30 Aug 2007 02:13:30 +0000 Subject: [PATCH 09/19] - Revise patch for GNOME bug #362638 to fix GNOME bug #357175 (Evolution fails to close after IMAP alert has been displayed). --- evolution-2.8.1-kill-ethread.patch | 453 +++++++++++++++-------------- 1 file changed, 241 insertions(+), 212 deletions(-) diff --git a/evolution-2.8.1-kill-ethread.patch b/evolution-2.8.1-kill-ethread.patch index f0c9cf1..cb537de 100644 --- a/evolution-2.8.1-kill-ethread.patch +++ b/evolution-2.8.1-kill-ethread.patch @@ -1,5 +1,6 @@ ---- evolution-2.10.2/mail/mail-send-recv.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/mail-send-recv.c 2007-06-27 14:29:23.000000000 -0400 +diff -up evolution-2.10.3/mail/mail-send-recv.c.kill-ethread evolution-2.10.3/mail/mail-send-recv.c +--- evolution-2.10.3/mail/mail-send-recv.c.kill-ethread 2007-06-30 15:22:35.000000000 -0400 ++++ evolution-2.10.3/mail/mail-send-recv.c 2007-08-29 18:13:23.000000000 -0400 @@ -725,23 +725,22 @@ receive_get_folder(CamelFilterDriver *d, /* ********************************************************************** */ @@ -27,8 +28,8 @@ - struct _refresh_folders_msg *m = (struct _refresh_folders_msg *)mm; int i; CamelFolder *folder; - -@@ -757,17 +756,14 @@ refresh_folders_get (struct _mail_msg *m + CamelException ex = CAMEL_EXCEPTION_INITIALISER; +@@ -761,17 +760,14 @@ refresh_folders_get (struct _mail_msg *m } static void @@ -48,7 +49,7 @@ int i; for (i=0;ifolders->len;i++) -@@ -776,11 +772,12 @@ refresh_folders_free (struct _mail_msg * +@@ -780,11 +776,12 @@ refresh_folders_free (struct _mail_msg * camel_object_unref(m->store); } @@ -66,7 +67,7 @@ }; static void -@@ -813,13 +810,13 @@ receive_update_got_folderinfo(CamelStore +@@ -817,13 +814,13 @@ receive_update_got_folderinfo(CamelStore get_folders(store, folders, info); @@ -82,8 +83,9 @@ } else { receive_done ("", data); } ---- evolution-2.10.2/mail/mail-component.c.kill-ethread 2007-05-27 15:55:12.000000000 -0400 -+++ evolution-2.10.2/mail/mail-component.c 2007-06-27 14:29:23.000000000 -0400 +diff -up evolution-2.10.3/mail/mail-component.c.kill-ethread evolution-2.10.3/mail/mail-component.c +--- evolution-2.10.3/mail/mail-component.c.kill-ethread 2007-05-27 15:55:12.000000000 -0400 ++++ evolution-2.10.3/mail/mail-component.c 2007-08-29 18:13:23.000000000 -0400 @@ -982,7 +982,7 @@ impl_handleURI (PortableServer_Servant s if (camel_url_get_param(url, "uid") != NULL) { char *curi = em_uri_to_camel(uri); @@ -93,8 +95,9 @@ g_free(curi); } else { g_warning("email uri's must include a uid parameter"); ---- evolution-2.10.2/mail/mail-ops.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/mail-ops.c 2007-06-27 14:32:56.000000000 -0400 +diff -up evolution-2.10.3/mail/mail-ops.c.kill-ethread evolution-2.10.3/mail/mail-ops.c +--- evolution-2.10.3/mail/mail-ops.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/mail-ops.c 2007-08-29 18:17:08.000000000 -0400 @@ -75,7 +75,7 @@ /* used for both just filtering a folder + uid's, and for filtering a whole folder */ /* used both for fetching mail, and for filtering mail */ @@ -2142,8 +2145,9 @@ return id; } ---- evolution-2.10.2/mail/em-folder-utils.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/em-folder-utils.c 2007-06-27 14:29:23.000000000 -0400 +diff -up evolution-2.10.3/mail/em-folder-utils.c.kill-ethread evolution-2.10.3/mail/em-folder-utils.c +--- evolution-2.10.3/mail/em-folder-utils.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/em-folder-utils.c 2007-08-29 18:13:23.000000000 -0400 @@ -84,7 +84,7 @@ emfu_is_special_local_folder (const char } @@ -2371,8 +2375,9 @@ return id; } ---- evolution-2.10.2/mail/importers/elm-importer.c.kill-ethread 2007-04-09 09:09:26.000000000 -0400 -+++ evolution-2.10.2/mail/importers/elm-importer.c 2007-06-27 14:29:23.000000000 -0400 +diff -up evolution-2.10.3/mail/importers/elm-importer.c.kill-ethread evolution-2.10.3/mail/importers/elm-importer.c +--- evolution-2.10.3/mail/importers/elm-importer.c.kill-ethread 2007-04-09 09:09:26.000000000 -0400 ++++ evolution-2.10.3/mail/importers/elm-importer.c 2007-08-29 18:13:23.000000000 -0400 @@ -51,7 +51,7 @@ #define d(x) x @@ -2471,8 +2476,9 @@ return id; } ---- evolution-2.10.2/mail/importers/mail-importer.c.kill-ethread 2007-04-09 09:09:26.000000000 -0400 -+++ evolution-2.10.2/mail/importers/mail-importer.c 2007-06-27 14:29:23.000000000 -0400 +diff -up evolution-2.10.3/mail/importers/mail-importer.c.kill-ethread evolution-2.10.3/mail/importers/mail-importer.c +--- evolution-2.10.3/mail/importers/mail-importer.c.kill-ethread 2007-04-09 09:09:26.000000000 -0400 ++++ evolution-2.10.3/mail/importers/mail-importer.c 2007-08-29 18:13:23.000000000 -0400 @@ -132,7 +132,7 @@ struct _BonoboObject *mail_importer_fact } @@ -2609,8 +2615,9 @@ } struct _import_folders_data { ---- evolution-2.10.2/mail/importers/pine-importer.c.kill-ethread 2007-04-09 09:09:26.000000000 -0400 -+++ evolution-2.10.2/mail/importers/pine-importer.c 2007-06-27 14:29:23.000000000 -0400 +diff -up evolution-2.10.3/mail/importers/pine-importer.c.kill-ethread evolution-2.10.3/mail/importers/pine-importer.c +--- evolution-2.10.3/mail/importers/pine-importer.c.kill-ethread 2007-04-09 09:09:26.000000000 -0400 ++++ evolution-2.10.3/mail/importers/pine-importer.c 2007-08-29 18:13:23.000000000 -0400 @@ -56,7 +56,7 @@ #define d(x) x @@ -2710,8 +2717,9 @@ return id; } ---- evolution-2.10.2/mail/em-utils.c.kill-ethread 2007-06-27 14:27:36.000000000 -0400 -+++ evolution-2.10.2/mail/em-utils.c 2007-06-27 14:29:23.000000000 -0400 +diff -up evolution-2.10.3/mail/em-utils.c.kill-ethread evolution-2.10.3/mail/em-utils.c +--- evolution-2.10.3/mail/em-utils.c.kill-ethread 2007-08-29 18:12:19.000000000 -0400 ++++ evolution-2.10.3/mail/em-utils.c 2007-08-29 18:13:23.000000000 -0400 @@ -1915,7 +1915,7 @@ em_utils_in_addressbook(CamelInternetAdd ESource *source = s->data; GList *contacts; @@ -2721,8 +2729,9 @@ d(printf(" checking '%s'\n", e_source_get_uri(source))); ---- evolution-2.10.2/mail/mail-vfolder.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/mail-vfolder.c 2007-06-27 14:29:23.000000000 -0400 +diff -up evolution-2.10.3/mail/mail-vfolder.c.kill-ethread evolution-2.10.3/mail/mail-vfolder.c +--- evolution-2.10.3/mail/mail-vfolder.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/mail-vfolder.c 2007-08-29 18:13:23.000000000 -0400 @@ -21,7 +21,7 @@ */ @@ -2957,8 +2966,9 @@ from = em_uri_from_camel(cfrom); to = em_uri_from_camel(cto); ---- evolution-2.10.2/mail/em-format-html.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/em-format-html.c 2007-06-27 14:29:23.000000000 -0400 +diff -up evolution-2.10.3/mail/em-format-html.c.kill-ethread evolution-2.10.3/mail/em-format-html.c +--- evolution-2.10.3/mail/em-format-html.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/em-format-html.c 2007-08-29 18:13:23.000000000 -0400 @@ -166,7 +166,7 @@ efh_gtkhtml_destroy(GtkHTML *html, EMFor if (efh->priv->format_timeout_id != 0) { g_source_remove(efh->priv->format_timeout_id); @@ -3083,8 +3093,9 @@ m->format = (EMFormatHTML *)emf; g_object_ref(emf); m->format_source = emfsource; ---- evolution-2.10.2/mail/em-folder-properties.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/em-folder-properties.c 2007-06-27 14:29:23.000000000 -0400 +diff -up evolution-2.10.3/mail/em-folder-properties.c.kill-ethread evolution-2.10.3/mail/em-folder-properties.c +--- evolution-2.10.3/mail/em-folder-properties.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/em-folder-properties.c 2007-08-29 18:13:23.000000000 -0400 @@ -386,7 +386,7 @@ em_folder_properties_show(GtkWindow *par } @@ -3094,8 +3105,9 @@ else emfp_dialog_got_folder((char *)uri, folder, NULL); } ---- evolution-2.10.2/mail/em-folder-tree.c.kill-ethread 2007-05-28 09:06:42.000000000 -0400 -+++ evolution-2.10.2/mail/em-folder-tree.c 2007-06-27 14:31:44.000000000 -0400 +diff -up evolution-2.10.3/mail/em-folder-tree.c.kill-ethread evolution-2.10.3/mail/em-folder-tree.c +--- evolution-2.10.3/mail/em-folder-tree.c.kill-ethread 2007-05-28 09:06:42.000000000 -0400 ++++ evolution-2.10.3/mail/em-folder-tree.c 2007-08-29 18:15:11.000000000 -0400 @@ -834,7 +834,7 @@ fail: /* TODO: Merge the drop handling code/menu's into one spot using a popup target for details */ /* Drop handling */ @@ -3114,18 +3126,16 @@ return; em_folder_utils_copy_folders(src->parent_store, src->full_name, m->store, m->full_name?m->full_name:"", m->move); -@@ -867,9 +867,8 @@ emft_drop_folder(struct _DragDataReceive +@@ -867,7 +867,7 @@ emft_drop_folder(struct _DragDataReceive } static char * -emft_drop_async_desc (struct _mail_msg *mm, int done) -+emft_drop_async__desc (struct _DragDataReceivedAsync *m) ++emft_drop_async__desc (struct _mail_msg *mm, int done) { -- struct _DragDataReceivedAsync *m = (struct _DragDataReceivedAsync *) mm; + struct _DragDataReceivedAsync *m = (struct _DragDataReceivedAsync *) mm; CamelURL *url; - char *buf; - -@@ -893,9 +892,8 @@ emft_drop_async_desc (struct _mail_msg * +@@ -893,9 +893,8 @@ emft_drop_async_desc (struct _mail_msg * } static void @@ -3136,7 +3146,7 @@ CamelFolder *folder; /* for types other than folder, we can't drop to the root path */ -@@ -903,14 +901,14 @@ emft_drop_async_drop (struct _mail_msg * +@@ -903,14 +902,14 @@ emft_drop_async_drop (struct _mail_msg * /* copy or move (aka rename) a folder */ emft_drop_folder(m); } else if (m->full_name == NULL) { @@ -3155,7 +3165,7 @@ break; case DND_DROP_TYPE_MESSAGE_RFC822: /* import a message/rfc822 stream */ -@@ -928,9 +926,8 @@ emft_drop_async_drop (struct _mail_msg * +@@ -928,9 +927,8 @@ emft_drop_async_drop (struct _mail_msg * } static void @@ -3166,7 +3176,7 @@ gboolean success, delete; /* ?? */ -@@ -938,7 +935,7 @@ emft_drop_async_done (struct _mail_msg * +@@ -938,7 +936,7 @@ emft_drop_async_done (struct _mail_msg * success = FALSE; delete = FALSE; } else { @@ -3175,7 +3185,7 @@ delete = success && m->move && !m->moved; } -@@ -946,10 +943,8 @@ emft_drop_async_done (struct _mail_msg * +@@ -946,10 +944,8 @@ emft_drop_async_done (struct _mail_msg * } static void @@ -3187,7 +3197,7 @@ g_object_unref(m->context); camel_object_unref(m->store); g_free(m->full_name); -@@ -958,18 +953,19 @@ emft_drop_async_free (struct _mail_msg * +@@ -958,18 +954,19 @@ emft_drop_async_free (struct _mail_msg * g_free(m->selection); } @@ -3213,7 +3223,7 @@ } static void -@@ -996,7 +992,7 @@ emft_drop_popup_cancel(EPopup *ep, EPopu +@@ -996,7 +993,7 @@ emft_drop_popup_cancel(EPopup *ep, EPopu struct _DragDataReceivedAsync *m = data; m->aborted = TRUE; @@ -3222,7 +3232,7 @@ } static EPopupItem emft_drop_popup_menu[] = { -@@ -1052,7 +1048,7 @@ tree_drag_data_received(GtkWidget *widge +@@ -1052,7 +1049,7 @@ tree_drag_data_received(GtkWidget *widge return; } @@ -3231,7 +3241,7 @@ m->context = context; g_object_ref(context); m->store = store; -@@ -1686,7 +1682,7 @@ dump_fi (CamelFolderInfo *fi, int depth) +@@ -1686,7 +1683,7 @@ dump_fi (CamelFolderInfo *fi, int depth) #endif struct _EMFolderTreeGetFolderInfo { @@ -3240,7 +3250,7 @@ /* input data */ GtkTreeRowReference *root; -@@ -1699,10 +1695,9 @@ struct _EMFolderTreeGetFolderInfo { +@@ -1699,10 +1696,9 @@ struct _EMFolderTreeGetFolderInfo { CamelFolderInfo *fi; }; @@ -3253,7 +3263,7 @@ char *ret, *name; name = camel_service_get_name((CamelService *)m->store, TRUE); -@@ -1712,18 +1707,16 @@ emft_get_folder_info__desc(struct _mail_ +@@ -1712,18 +1708,16 @@ emft_get_folder_info__desc(struct _mail_ } static void @@ -3275,7 +3285,7 @@ struct _EMFolderTreePrivate *priv = m->emft->priv; struct _EMFolderTreeModelStoreInfo *si; GtkTreeIter root, iter; -@@ -1751,7 +1744,7 @@ emft_get_folder_info__got (struct _mail_ +@@ -1751,7 +1745,7 @@ emft_get_folder_info__got (struct _mail_ gtk_tree_model_get_iter ((GtkTreeModel *) model, &root, path); /* if we had an error, then we need to re-set the load subdirs state and collapse the node */ @@ -3284,7 +3294,7 @@ gtk_tree_store_set(model, &root, COL_BOOL_LOAD_SUBDIRS, TRUE, -1); gtk_tree_view_collapse_row (priv->treeview, path); gtk_tree_path_free (path); -@@ -1806,10 +1799,8 @@ emft_get_folder_info__got (struct _mail_ +@@ -1806,10 +1800,8 @@ emft_get_folder_info__got (struct _mail_ } static void @@ -3296,7 +3306,7 @@ camel_store_free_folder_info (m->store, m->fi); gtk_tree_row_reference_free (m->root); -@@ -1818,11 +1809,12 @@ emft_get_folder_info__free (struct _mail +@@ -1818,11 +1810,12 @@ emft_get_folder_info__free (struct _mail g_free (m->top); } @@ -3314,7 +3324,7 @@ }; static void -@@ -1906,7 +1898,7 @@ emft_tree_row_expanded (GtkTreeView *tre +@@ -1906,7 +1899,7 @@ emft_tree_row_expanded (GtkTreeView *tre gtk_tree_store_set((GtkTreeStore *)model, root, COL_BOOL_LOAD_SUBDIRS, FALSE, -1); @@ -3323,7 +3333,7 @@ m->root = gtk_tree_row_reference_new (model, tree_path); camel_object_ref (store); m->store = store; -@@ -1915,7 +1907,7 @@ emft_tree_row_expanded (GtkTreeView *tre +@@ -1915,7 +1908,7 @@ emft_tree_row_expanded (GtkTreeView *tre m->top = full_name; m->flags = CAMEL_STORE_FOLDER_INFO_RECURSIVE|CAMEL_STORE_FOLDER_INFO_FAST; @@ -3332,8 +3342,9 @@ } static gboolean ---- evolution-2.10.2/mail/em-folder-browser.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/em-folder-browser.c 2007-06-27 14:29:23.000000000 -0400 +diff -up evolution-2.10.3/mail/em-folder-browser.c.kill-ethread evolution-2.10.3/mail/em-folder-browser.c +--- evolution-2.10.3/mail/em-folder-browser.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/em-folder-browser.c 2007-08-29 18:13:23.000000000 -0400 @@ -838,7 +838,7 @@ get_view_query (ESearchBar *esb) @@ -3435,8 +3446,9 @@ return id; } ---- evolution-2.10.2/mail/message-list.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/message-list.c 2007-06-27 14:29:23.000000000 -0400 +diff -up evolution-2.10.3/mail/message-list.c.kill-ethread evolution-2.10.3/mail/message-list.c +--- evolution-2.10.3/mail/message-list.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/message-list.c 2007-08-29 18:13:23.000000000 -0400 @@ -1802,7 +1802,7 @@ ml_tree_drag_data_get (ETree *tree, int /* TODO: merge this with the folder tree stuff via empopup targets */ /* Drop handling */ @@ -3713,8 +3725,9 @@ m->ml = ml; m->search = g_strdup (search); m->hideexpr = g_strdup (hideexpr); ---- evolution-2.10.2/mail/em-sync-stream.h.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/em-sync-stream.h 2007-06-27 14:29:23.000000000 -0400 +diff -up evolution-2.10.3/mail/em-sync-stream.h.kill-ethread evolution-2.10.3/mail/em-sync-stream.h +--- evolution-2.10.3/mail/em-sync-stream.h.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/em-sync-stream.h 2007-08-29 18:13:23.000000000 -0400 @@ -29,41 +29,45 @@ requests are always handled in the main #ifndef EM_SYNC_STREAM_H #define EM_SYNC_STREAM_H @@ -3791,8 +3804,9 @@ +G_END_DECLS #endif /* EM_SYNC_STREAM_H */ ---- evolution-2.10.2/mail/em-format-html-print.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/em-format-html-print.c 2007-06-27 14:32:04.000000000 -0400 +diff -up evolution-2.10.3/mail/em-format-html-print.c.kill-ethread evolution-2.10.3/mail/em-format-html-print.c +--- evolution-2.10.3/mail/em-format-html-print.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/em-format-html-print.c 2007-08-29 18:15:39.000000000 -0400 @@ -262,7 +262,7 @@ int em_format_html_print_message(EMForma g_object_ref(source); g_object_ref(efhp); @@ -3802,8 +3816,9 @@ return 0; /* damn async ... */ } ---- evolution-2.10.2/mail/em-sync-stream.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/em-sync-stream.c 2007-06-27 14:29:23.000000000 -0400 +diff -up evolution-2.10.3/mail/em-sync-stream.c.kill-ethread evolution-2.10.3/mail/em-sync-stream.c +--- evolution-2.10.3/mail/em-sync-stream.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/em-sync-stream.c 2007-08-29 18:13:23.000000000 -0400 @@ -25,42 +25,17 @@ #include #endif @@ -4026,7 +4041,7 @@ static void -sync_op(EMSyncStream *emss, enum _write_msg_t op, const char *data, size_t n) +emss_sync_op (EMSyncStream *emss, enum _write_msg_t op, -+ const gchar *string, gsize len) ++ const gchar *string, gsize len) { - struct _EMSyncStreamPrivate *p = emss->priv; struct _write_msg msg; @@ -4229,8 +4244,9 @@ + g_string_free (emss->buffer, TRUE); + emss->buffer = g_string_sized_new (size); } ---- evolution-2.10.2/mail/em-subscribe-editor.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/em-subscribe-editor.c 2007-06-27 14:29:23.000000000 -0400 +diff -up evolution-2.10.3/mail/em-subscribe-editor.c.kill-ethread evolution-2.10.3/mail/em-subscribe-editor.c +--- evolution-2.10.3/mail/em-subscribe-editor.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/em-subscribe-editor.c 2007-08-29 18:13:23.000000000 -0400 @@ -175,7 +175,7 @@ sub_unref(EMSubscribe *sub) /* ** Subscribe folder operation **************************************** */ @@ -4446,8 +4462,9 @@ sub_unref(sub); } ---- evolution-2.10.2/mail/mail-mt.h.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/mail-mt.h 2007-06-27 14:29:23.000000000 -0400 +diff -up evolution-2.10.3/mail/mail-mt.h.kill-ethread evolution-2.10.3/mail/mail-mt.h +--- evolution-2.10.3/mail/mail-mt.h.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/mail-mt.h 2007-08-29 18:13:23.000000000 -0400 @@ -23,47 +23,64 @@ #ifndef _MAIL_MT #define _MAIL_MT @@ -4559,8 +4576,9 @@ /* A generic proxy event for anything that can be proxied during the life of the mailer (almost nothing) */ /* Note that almost all objects care about the lifecycle of their events, so this cannot be used */ extern MailAsyncEvent *mail_async_event; ---- evolution-2.10.2/mail/mail-ops.h.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/mail-ops.h 2007-06-27 14:29:23.000000000 -0400 +diff -up evolution-2.10.3/mail/mail-ops.h.kill-ethread evolution-2.10.3/mail/mail-ops.h +--- evolution-2.10.3/mail/mail-ops.h.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/mail-ops.h 2007-08-29 18:13:23.000000000 -0400 @@ -30,13 +30,14 @@ extern "C" { #pragma } #endif /* __cplusplus */ @@ -4601,8 +4619,9 @@ /* and for a store */ int mail_get_store (const char *uri, CamelOperation *op, ---- evolution-2.10.2/mail/em-composer-utils.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/em-composer-utils.c 2007-06-27 14:29:23.000000000 -0400 +diff -up evolution-2.10.3/mail/em-composer-utils.c.kill-ethread evolution-2.10.3/mail/em-composer-utils.c +--- evolution-2.10.3/mail/em-composer-utils.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/em-composer-utils.c 2007-08-29 18:13:23.000000000 -0400 @@ -534,7 +534,7 @@ em_utils_composer_save_draft_cb (EMsgCom strcmp (account->drafts_folder_uri, default_drafts_folder_uri) != 0) { int id; @@ -4646,8 +4665,9 @@ - mail_get_message (folder, uid, post_reply_to_message, NULL, mail_thread_new); + mail_get_message (folder, uid, post_reply_to_message, NULL, mail_msg_unordered_push); } ---- evolution-2.10.2/mail/mail-folder-cache.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/mail-folder-cache.c 2007-06-27 14:29:23.000000000 -0400 +diff -up evolution-2.10.3/mail/mail-folder-cache.c.kill-ethread evolution-2.10.3/mail/mail-folder-cache.c +--- evolution-2.10.3/mail/mail-folder-cache.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/mail-folder-cache.c 2007-08-29 18:13:23.000000000 -0400 @@ -843,15 +843,14 @@ update_folders(CamelStore *store, CamelF @@ -4733,8 +4753,9 @@ LOCK(info_lock); ---- evolution-2.10.2/mail/em-folder-view.c.kill-ethread 2007-05-28 01:09:15.000000000 -0400 -+++ evolution-2.10.2/mail/em-folder-view.c 2007-06-27 14:30:03.000000000 -0400 +diff -up evolution-2.10.3/mail/em-folder-view.c.kill-ethread evolution-2.10.3/mail/em-folder-view.c +--- evolution-2.10.3/mail/em-folder-view.c.kill-ethread 2007-06-17 23:30:46.000000000 -0400 ++++ evolution-2.10.3/mail/em-folder-view.c 2007-08-29 18:14:08.000000000 -0400 @@ -68,6 +68,7 @@ #include @@ -4752,7 +4773,7 @@ } static void -@@ -1613,7 +1614,7 @@ filter_type_uid (CamelFolder *folder, co +@@ -1651,7 +1652,7 @@ filter_type_uid (CamelFolder *folder, co data->type = type; data->source = source; @@ -4761,7 +4782,7 @@ } static void -@@ -1711,7 +1712,7 @@ vfolder_type_uid (CamelFolder *folder, c +@@ -1749,7 +1750,7 @@ vfolder_type_uid (CamelFolder *folder, c data->type = type; data->uri = g_strdup (uri); @@ -4770,7 +4791,7 @@ } static void -@@ -2370,7 +2371,7 @@ emfv_message_selected_timeout(void *data +@@ -2408,7 +2409,7 @@ emfv_message_selected_timeout(void *data g_object_ref (emfv); /* TODO: we should manage our own thread stuff, would make cancelling outstanding stuff easier */ e_profile_event_emit("goto.load", emfv->displayed_uid, 0); @@ -4779,8 +4800,9 @@ } else { e_profile_event_emit("goto.empty", "", 0); g_free(emfv->priv->selected_uid); ---- evolution-2.10.2/mail/mail-session.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/mail-session.c 2007-06-27 14:29:23.000000000 -0400 +diff -up evolution-2.10.3/mail/mail-session.c.kill-ethread evolution-2.10.3/mail/mail-session.c +--- evolution-2.10.3/mail/mail-session.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/mail-session.c 2007-08-29 18:13:23.000000000 -0400 @@ -35,7 +35,7 @@ #include @@ -4790,7 +4812,7 @@ #include /* FIXME: this is where camel_init is defined, it shouldn't include everything else */ #include -@@ -256,21 +256,22 @@ forget_password (CamelSession *session, +@@ -256,148 +256,145 @@ forget_password (CamelSession *session, /* ********************************************************************** */ @@ -4817,13 +4839,15 @@ /* clicked, send back the reply */ static void -@@ -278,122 +279,116 @@ user_message_response (GtkDialog *dialog + user_message_response (GtkDialog *dialog, int button, struct _user_message_msg *m) { gtk_widget_destroy ((GtkWidget *) dialog); - +- - message_dialog = NULL; +- ++ + user_message_dialog = NULL; - ++ /* if !allow_cancel, then we've already replied */ if (m->allow_cancel) { m->result = button == GTK_RESPONSE_OK; @@ -4880,6 +4904,22 @@ - break; - default: - type = 0; +- } +- +- if (m->allow_cancel) +- type += 3; +- +- message_dialog = (GtkDialog *)e_error_new(NULL, error_type[type], m->prompt, NULL); +- g_object_set ((GObject *) message_dialog, "allow_shrink", TRUE, "allow_grow", TRUE, NULL); +- +- /* We only need to wait for the result if we allow cancel otherwise show but send result back instantly */ +- if (m->allow_cancel) { +- if (m->ismain) { +- user_message_response(message_dialog, gtk_dialog_run (message_dialog), m); +- } else { +- g_signal_connect (message_dialog, "response", G_CALLBACK (user_message_response), m); +- gtk_widget_show ((GtkWidget *) message_dialog); +- } + case CAMEL_SESSION_ALERT_INFO: + error_type = m->allow_cancel ? + "mail:session-message-info-cancel" : @@ -4897,36 +4937,27 @@ + break; + default: + g_assert_not_reached (); - } - -- if (m->allow_cancel) -- type += 3; -- -- message_dialog = (GtkDialog *)e_error_new(NULL, error_type[type], m->prompt, NULL); -- g_object_set ((GObject *) message_dialog, "allow_shrink", TRUE, "allow_grow", TRUE, NULL); -+ user_message_dialog = e_error_new(NULL, error_type, m->prompt, NULL); -+ g_object_set (user_message_dialog, "allow_shrink", TRUE, "allow_grow", TRUE, NULL); - - /* We only need to wait for the result if we allow cancel otherwise show but send result back instantly */ - if (m->allow_cancel) { - if (m->ismain) { -- user_message_response(message_dialog, gtk_dialog_run (message_dialog), m); -+ user_message_response(user_message_dialog, gtk_dialog_run (user_message_dialog), m); - } else { -- g_signal_connect (message_dialog, "response", G_CALLBACK (user_message_response), m); -- gtk_widget_show ((GtkWidget *) message_dialog); -+ g_signal_connect (user_message_dialog, "response", G_CALLBACK (user_message_response), m); -+ gtk_widget_show (user_message_dialog); - } ++ } ++ ++ user_message_dialog = e_error_new (NULL, error_type, m->prompt, NULL); ++ g_object_set ( ++ user_message_dialog, "allow_shrink", TRUE, ++ "allow_grow", TRUE, NULL); ++ ++ /* We only need to wait for the result if we allow cancel ++ * otherwise show but send result back instantly */ ++ if (m->allow_cancel && m->ismain) { ++ gint response = gtk_dialog_run (user_message_dialog); ++ user_message_response (user_message_dialog, response, m); } else { - g_signal_connect (message_dialog, "response", G_CALLBACK (gtk_widget_destroy), message_dialog); - g_object_weak_ref ((GObject *) message_dialog, (GWeakNotify) user_message_destroy_notify, m); - gtk_widget_show ((GtkWidget *) message_dialog); - mail_msg_free(m); -+ g_signal_connect (user_message_dialog, "response", G_CALLBACK (gtk_widget_destroy), user_message_dialog); -+ g_object_add_weak_pointer (user_message_dialog, &user_message_dialog); ++ g_signal_connect ( ++ user_message_dialog, "response", ++ G_CALLBACK (user_message_response), m); + gtk_widget_show (user_message_dialog); -+ mail_msg_unref(m); } } @@ -4955,8 +4986,9 @@ MailSession *mail_session = MAIL_SESSION (session); - struct _user_message_msg *m, *r; - EMsgPort *user_message_reply = NULL; +- gboolean ret; + struct _user_message_msg *m; - gboolean ret; ++ gboolean result = TRUE; if (!mail_session->interactive) return FALSE; @@ -4966,38 +4998,51 @@ - m = mail_msg_new (&user_message_op, user_message_reply, sizeof (*m)); - m->ismain = pthread_equal(pthread_self(), mail_gui_thread); + m = mail_msg_new (&user_message_info); -+ m->ismain = mail_in_main_thread(); ++ m->ismain = mail_in_main_thread (); m->type = type; - m->prompt = g_strdup(prompt); +- m->prompt = g_strdup(prompt); ++ m->prompt = g_strdup (prompt); + m->done = e_flag_new (); m->allow_cancel = cancel; +- if (m->ismain) +- do_user_message((struct _mail_msg *)m); +- else { +- extern EMsgPort *mail_gui_port2; + if (cancel) + mail_msg_ref (m); -+ - if (m->ismain) -- do_user_message((struct _mail_msg *)m); -+ user_message_exec(m); - else { -- extern EMsgPort *mail_gui_port2; -- + - e_msgport_put(mail_gui_port2, (EMsg *)m); -+ mail_msg_main_loop_push(mail_msg_ref (m)); - } +- } ++ if (m->ismain) ++ user_message_exec (m); ++ else ++ mail_msg_main_loop_push (m); if (cancel) { - r = (struct _user_message_msg *)e_msgport_wait(user_message_reply); - g_assert(m == r); -- + e_flag_wait (m->done); - ret = m->result; ++ result = m->result; ++ mail_msg_unref (m); ++ } + +- ret = m->result; - mail_msg_free(m); - e_msgport_destroy(user_message_reply); -+ mail_msg_unref(m); - } else - ret = TRUE; +- } else +- ret = TRUE; ++ if (m->ismain) { ++ user_message_free (m); ++ mail_msg_unref (m); ++ } -@@ -533,7 +528,7 @@ get_filter_driver (CamelSession *session +- return ret; ++ return result; + } + + static CamelFolder * +@@ -533,7 +530,7 @@ get_filter_driver (CamelSession *session /* TODO: This is very temporary, until we have a better way to do the progress reporting, we just borrow a dummy mail-mt thread message and hook it onto out camel thread message */ @@ -5006,7 +5051,7 @@ static void *ms_thread_msg_new(CamelSession *session, CamelSessionThreadOps *ops, unsigned int size) { -@@ -542,7 +537,7 @@ static void *ms_thread_msg_new(CamelSess +@@ -542,7 +539,7 @@ static void *ms_thread_msg_new(CamelSess /* We create a dummy mail_msg, and then copy its cancellation port over to ours, so we get cancellation and progress in common with hte existing mail code, for free */ if (msg) { @@ -5015,7 +5060,7 @@ msg->data = m; camel_operation_unref(msg->op); -@@ -555,7 +550,7 @@ static void *ms_thread_msg_new(CamelSess +@@ -555,7 +552,7 @@ static void *ms_thread_msg_new(CamelSess static void ms_thread_msg_free(CamelSession *session, CamelSessionThreadMsg *m) { @@ -5024,7 +5069,7 @@ ms_parent_class->thread_msg_free(session, m); } -@@ -678,22 +673,23 @@ mail_session_set_interactive (gboolean i +@@ -678,22 +675,23 @@ mail_session_set_interactive (gboolean i MAIL_SESSION (session)->interactive = interactive; if (!interactive) { @@ -5054,8 +5099,9 @@ } } } ---- evolution-2.10.2/mail/mail-mt.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.2/mail/mail-mt.c 2007-06-27 14:29:23.000000000 -0400 +diff -up evolution-2.10.3/mail/mail-mt.c.kill-ethread evolution-2.10.3/mail/mail-mt.c +--- evolution-2.10.3/mail/mail-mt.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/mail-mt.c 2007-08-29 18:13:23.000000000 -0400 @@ -29,8 +29,8 @@ #include #include @@ -5149,17 +5195,17 @@ { - struct _mail_msg *m = msg; - int activity_id; -+ /* XXX This function is broken out from mail_msg_unref() -+ * only for the benefit of op_status_exec() below. */ ++ /* XXX This function is broken out from mail_msg_unref() ++ * only for the benefit of op_status_exec() below. */ + -+ if (mail_msg->cancel != NULL) { -+ camel_operation_mute (mail_msg->cancel); -+ camel_operation_unref (mail_msg->cancel); -+ } ++ if (mail_msg->cancel != NULL) { ++ camel_operation_mute (mail_msg->cancel); ++ camel_operation_unref (mail_msg->cancel); ++ } + -+ camel_exception_clear (&mail_msg->ex); -+ g_slice_free (MailMsgPrivate, mail_msg->priv); -+ g_slice_free1 (mail_msg->info->size, mail_msg); ++ camel_exception_clear (&mail_msg->ex); ++ g_slice_free (MailMsgPrivate, mail_msg->priv); ++ g_slice_free1 (mail_msg->info->size, mail_msg); +} + +gpointer @@ -5249,7 +5295,7 @@ - /*g_free(m->priv->what);*/ - g_free(m->priv); - g_free(m); -+ mail_msg_free (mail_msg); ++ mail_msg_free (mail_msg); if (activity_id != 0) - mail_async_event_emit(mail_async_event, MAIL_ASYNC_GUI, (MailAsyncFunc) end_event_callback, @@ -5348,10 +5394,10 @@ - GDestroyNotify func; - void *data; -}; -- --static EDList cancel_hook_list = E_DLIST_INITIALISER(cancel_hook_list); +static GHookList cancel_hook_list; +-static EDList cancel_hook_list = E_DLIST_INITIALISER(cancel_hook_list); +- -void *mail_cancel_hook_add(GDestroyNotify func, void *data) +GHook * +mail_cancel_hook_add (GHookFunc func, gpointer data) @@ -6087,7 +6133,7 @@ - camel_exception_clear (&msg->ex); - g_free (msg->priv); - g_free (msg); -+ mail_msg_free (msg); ++ mail_msg_free (msg); } else { data->activity_state = 2; MAIL_MT_UNLOCK (mail_msg_lock); @@ -6135,8 +6181,9 @@ } /* ******************** */ ---- evolution-2.10.2/plugins/folder-unsubscribe/folder-unsubscribe.c.kill-ethread 2007-04-09 09:09:11.000000000 -0400 -+++ evolution-2.10.2/plugins/folder-unsubscribe/folder-unsubscribe.c 2007-06-27 14:29:23.000000000 -0400 +diff -up evolution-2.10.3/plugins/folder-unsubscribe/folder-unsubscribe.c.kill-ethread evolution-2.10.3/plugins/folder-unsubscribe/folder-unsubscribe.c +--- evolution-2.10.3/plugins/folder-unsubscribe/folder-unsubscribe.c.kill-ethread 2007-04-09 09:09:11.000000000 -0400 ++++ evolution-2.10.3/plugins/folder-unsubscribe/folder-unsubscribe.c 2007-08-29 18:13:23.000000000 -0400 @@ -44,32 +44,30 @@ void org_gnome_mail_folder_unsubscribe ( @@ -6216,8 +6263,9 @@ - e_thread_put (mail_thread_new, (EMsg *) unsub); + mail_msg_unordered_push (unsub); } ---- evolution-2.10.2/plugins/mark-all-read/mark-all-read.c.kill-ethread 2007-05-27 14:21:10.000000000 -0400 -+++ evolution-2.10.2/plugins/mark-all-read/mark-all-read.c 2007-06-27 14:29:23.000000000 -0400 +diff -up evolution-2.10.3/plugins/mark-all-read/mark-all-read.c.kill-ethread evolution-2.10.3/plugins/mark-all-read/mark-all-read.c +--- evolution-2.10.3/plugins/mark-all-read/mark-all-read.c.kill-ethread 2007-05-27 14:21:10.000000000 -0400 ++++ evolution-2.10.3/plugins/mark-all-read/mark-all-read.c 2007-08-29 18:13:23.000000000 -0400 @@ -44,7 +44,7 @@ org_gnome_mark_all_read (EPlugin *ep, EM return; } @@ -6227,19 +6275,21 @@ } static void ---- evolution-2.10.2/plugins/exchange-operations/exchange-folder.c.kill-ethread 2007-05-25 02:43:33.000000000 -0400 -+++ evolution-2.10.2/plugins/exchange-operations/exchange-folder.c 2007-06-27 14:29:23.000000000 -0400 +diff -up evolution-2.10.3/plugins/exchange-operations/exchange-folder.c.kill-ethread evolution-2.10.3/plugins/exchange-operations/exchange-folder.c +--- evolution-2.10.3/plugins/exchange-operations/exchange-folder.c.kill-ethread 2007-05-25 02:43:33.000000000 -0400 ++++ evolution-2.10.3/plugins/exchange-operations/exchange-folder.c 2007-08-29 18:13:23.000000000 -0400 @@ -140,7 +140,7 @@ org_gnome_exchange_folder_inbox_unsubscr inbox_physical_uri = e_folder_get_physical_uri (inbox); /* To get the CamelStore/Folder */ - mail_get_folder (inbox_physical_uri, 0, exchange_get_folder, target_uri, mail_thread_new); -+ mail_get_folder (inbox_physical_uri, 0, exchange_get_folder, target_uri, mail_msg_unordered_push); ++ mail_get_folder (inbox_physical_uri, 0, exchange_get_folder, target_uri, mail_msg_unordered_push); } ---- evolution-2.10.2/plugins/save-attachments/save-attachments.c.kill-ethread 2007-04-09 09:09:15.000000000 -0400 -+++ evolution-2.10.2/plugins/save-attachments/save-attachments.c 2007-06-27 14:29:23.000000000 -0400 +diff -up evolution-2.10.3/plugins/save-attachments/save-attachments.c.kill-ethread evolution-2.10.3/plugins/save-attachments/save-attachments.c +--- evolution-2.10.3/plugins/save-attachments/save-attachments.c.kill-ethread 2007-04-09 09:09:15.000000000 -0400 ++++ evolution-2.10.3/plugins/save-attachments/save-attachments.c 2007-08-29 18:13:23.000000000 -0400 @@ -407,5 +407,5 @@ org_gnome_save_attachments_save(EPlugin camel_object_ref(data->folder); data->uid = g_strdup(target->uids->pdata[0]); @@ -6247,19 +6297,21 @@ - mail_get_message(data->folder, data->uid, save_got_message, data, mail_thread_new); + mail_get_message(data->folder, data->uid, save_got_message, data, mail_msg_unordered_push); } ---- evolution-2.10.2/plugins/mailing-list-actions/mailing-list-actions.c.kill-ethread 2007-04-09 09:09:14.000000000 -0400 -+++ evolution-2.10.2/plugins/mailing-list-actions/mailing-list-actions.c 2007-06-27 14:29:23.000000000 -0400 +diff -up evolution-2.10.3/plugins/mailing-list-actions/mailing-list-actions.c.kill-ethread evolution-2.10.3/plugins/mailing-list-actions/mailing-list-actions.c +--- evolution-2.10.3/plugins/mailing-list-actions/mailing-list-actions.c.kill-ethread 2007-04-09 09:09:14.000000000 -0400 ++++ evolution-2.10.3/plugins/mailing-list-actions/mailing-list-actions.c 2007-08-29 18:13:23.000000000 -0400 @@ -89,7 +89,7 @@ void emla_list_action (EPlugin *item, EM data->uri = strdup (sel->uri); mail_get_message (sel->folder, (const char*) g_ptr_array_index (sel->uids, 0), - emla_list_action_do, data, mail_thread_new); -+ emla_list_action_do, data, mail_msg_unordered_push); ++ emla_list_action_do, data, mail_msg_unordered_push); } void emla_list_action_do (CamelFolder *folder, const char *uid, CamelMimeMessage *msg, void *data) ---- evolution-2.10.2/plugins/groupwise-features/share-folder-common.c.kill-ethread 2007-04-09 09:09:12.000000000 -0400 -+++ evolution-2.10.2/plugins/groupwise-features/share-folder-common.c 2007-06-27 14:29:23.000000000 -0400 +diff -up evolution-2.10.3/plugins/groupwise-features/share-folder-common.c.kill-ethread evolution-2.10.3/plugins/groupwise-features/share-folder-common.c +--- evolution-2.10.3/plugins/groupwise-features/share-folder-common.c.kill-ethread 2007-04-09 09:09:12.000000000 -0400 ++++ evolution-2.10.3/plugins/groupwise-features/share-folder-common.c 2007-08-29 18:13:23.000000000 -0400 @@ -121,7 +121,7 @@ shared_folder_abort (EPlugin *ep, EConfi } @@ -6357,8 +6409,9 @@ return id; } ---- evolution-2.10.2/calendar/gui/alarm-notify/alarm-notify.h.kill-ethread 2007-04-09 09:10:29.000000000 -0400 -+++ evolution-2.10.2/calendar/gui/alarm-notify/alarm-notify.h 2007-06-27 14:29:23.000000000 -0400 +diff -up evolution-2.10.3/calendar/gui/alarm-notify/alarm-notify.h.kill-ethread evolution-2.10.3/calendar/gui/alarm-notify/alarm-notify.h +--- evolution-2.10.3/calendar/gui/alarm-notify/alarm-notify.h.kill-ethread 2007-04-09 09:10:29.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/alarm-notify/alarm-notify.h 2007-08-29 18:13:23.000000000 -0400 @@ -39,19 +39,6 @@ typedef struct _AlarmNotifyClass AlarmNo typedef struct _AlarmNotifyPrivate AlarmNotifyPrivate; @@ -6379,8 +6432,9 @@ struct _AlarmNotify { BonoboObject object; ---- evolution-2.10.2/calendar/gui/alarm-notify/alarm-notify.c.kill-ethread 2007-04-09 09:10:29.000000000 -0400 -+++ evolution-2.10.2/calendar/gui/alarm-notify/alarm-notify.c 2007-06-27 14:29:23.000000000 -0400 +diff -up evolution-2.10.3/calendar/gui/alarm-notify/alarm-notify.c.kill-ethread evolution-2.10.3/calendar/gui/alarm-notify/alarm-notify.c +--- evolution-2.10.3/calendar/gui/alarm-notify/alarm-notify.c.kill-ethread 2007-04-09 09:10:29.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/alarm-notify/alarm-notify.c 2007-08-29 18:13:23.000000000 -0400 @@ -45,10 +45,6 @@ struct _AlarmNotifyPrivate { GMutex *mutex; }; @@ -6493,8 +6547,9 @@ } static void ---- evolution-2.10.2/calendar/gui/alarm-notify/alarm-queue.c.kill-ethread 2007-04-09 09:10:29.000000000 -0400 -+++ evolution-2.10.2/calendar/gui/alarm-notify/alarm-queue.c 2007-06-27 14:29:23.000000000 -0400 +diff -up evolution-2.10.3/calendar/gui/alarm-notify/alarm-queue.c.kill-ethread evolution-2.10.3/calendar/gui/alarm-notify/alarm-queue.c +--- evolution-2.10.3/calendar/gui/alarm-notify/alarm-queue.c.kill-ethread 2007-04-09 09:10:29.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/alarm-notify/alarm-queue.c 2007-08-29 18:13:23.000000000 -0400 @@ -115,9 +115,6 @@ static int tray_blink_id = -1; static int tray_blink_state = FALSE; static AlarmNotify *an; @@ -6708,7 +6763,8 @@ { - AlarmMsg *msg; - struct _query_msg *list; -- ++ struct _query_msg *msg; + - /* These two structures will be freed by the msg destroy function*/ - msg = malloc (sizeof (AlarmMsg)); - msg->receive_msg = query_objects_removed_async; @@ -6718,8 +6774,7 @@ - list->objects = duplicate_ecal (objects); - list->data = data; - msg->data = list; -+ struct _query_msg *msg; - +- - d(printf("%s:%d (query_objects_removed_cb) - Posting a task\n",__FILE__, __LINE__)); - e_thread_put(alarm_operation_thread, (EMsg *)msg); + msg = g_slice_new (struct _query_msg); @@ -6770,12 +6825,12 @@ { - AlarmMsg *msg; - struct _query_msg *list; -+ struct _query_msg *msg; - +- - /* These two structures will be freed by the msg destroy function*/ - msg = malloc (sizeof (AlarmMsg)); - msg->receive_msg = on_dialog_objs_removed_async; -- ++ struct _query_msg *msg; + - list = malloc (sizeof (struct _query_msg)); - list->client = client; - list->objects = objects; @@ -6823,12 +6878,11 @@ - /* These two structures will be freed by the msg destroy function*/ - msg = malloc (sizeof (AlarmMsg)); - msg->receive_msg = tray_list_remove_cqa_async; -- ++ struct _tray_cqa_msg *msg; + - list = malloc (sizeof (struct _tray_cqa_msg)); - list->cqa = cqa; - msg->data = list; -+ struct _tray_cqa_msg *msg; -+ + msg = g_slice_new (struct _tray_cqa_msg); + msg->header.func = (MessageFunc) tray_list_remove_cqa_async; + msg->cqa = cqa; @@ -6903,12 +6957,11 @@ - /* These two structures will be freed by the msg destroy function*/ - msg = malloc (sizeof (AlarmMsg)); - msg->receive_msg = tray_list_remove_data_async; -- ++ struct _tray_msg *msg; + - list = malloc (sizeof (struct _tray_msg)); - list->data = data; - msg->data = list; -+ struct _tray_msg *msg; -+ + msg = g_slice_new (struct _tray_msg); + msg->header.func = (MessageFunc) tray_list_remove_data_async; + msg->data = data; @@ -6945,17 +6998,16 @@ - /* These two structures will be freed by the msg destroy function*/ - msg = malloc (sizeof (AlarmMsg)); - msg->receive_msg = tray_list_add_async; -- ++ msg = g_slice_new (struct _tray_msg); ++ msg->header.func = (MessageFunc) tray_list_add_async; ++ msg->data = data; + - list = malloc (sizeof (struct _tray_msg)); - list->data = data; - msg->data = list; - - d(printf("%s:%d (tray_list_add_new) - Posting a task\n",__FILE__, __LINE__)); - e_thread_put(alarm_operation_thread, (EMsg *)msg); -+ msg = g_slice_new (struct _tray_msg); -+ msg->header.func = (MessageFunc) tray_list_add_async; -+ msg->data = data; -+ + message_push ((Message *) msg); } @@ -6970,17 +7022,17 @@ - /* These two structures will be freed by the msg destroy function*/ - msg = malloc (sizeof (AlarmMsg)); - msg->receive_msg = midnight_refresh_async; -- -- list = malloc (sizeof (struct _midnight_refresh_msg)); + struct _midnight_refresh_msg *msg; -- list->remove = FALSE; -- /* We dont need it. So set it to NULL */ -- msg->data = list; +- list = malloc (sizeof (struct _midnight_refresh_msg)); + msg = g_slice_new (struct _midnight_refresh_msg); + msg->header.func = (MessageFunc) midnight_refresh_async; + msg->remove = FALSE; +- list->remove = FALSE; +- /* We dont need it. So set it to NULL */ +- msg->data = list; +- - d(printf("%s:%d (check_midnight_refresh) - Posting a task to refresh\n",__FILE__, __LINE__)); - e_thread_put(alarm_operation_thread, (EMsg *)msg); + message_push ((Message *) msg); @@ -7026,15 +7078,15 @@ - /* These two structures will be freed by the msg destroy function*/ - msg = malloc (sizeof (AlarmMsg)); - msg->receive_msg = alarm_queue_add_async; -- -- list = malloc (sizeof (struct _alarm_client_msg)); -- list->client = client; -- g_object_ref (client); -- msg->data = list; + msg = g_slice_new (struct _alarm_client_msg); + msg->header.func = (MessageFunc) alarm_queue_add_async; + msg->client = g_object_ref (client); +- list = malloc (sizeof (struct _alarm_client_msg)); +- list->client = client; +- g_object_ref (client); +- msg->data = list; +- - d(printf("%s:%d (alarm_queue_add_client) - Posting a task\n",__FILE__, __LINE__)); - e_thread_put(alarm_operation_thread, (EMsg *)msg); + message_push ((Message *) msg); @@ -7055,7 +7107,7 @@ g_return_if_fail (alarm_queue_inited); g_return_if_fail (client != NULL); -@@ -2148,24 +2132,20 @@ alarm_queue_remove_async (EThread *e, Al +@@ -2148,6 +2132,8 @@ alarm_queue_remove_async (EThread *e, Al g_free (ca); g_hash_table_remove (client_alarms_hash, client); @@ -7064,26 +7116,3 @@ } void - alarm_queue_remove_client (ECal *client) - { -- AlarmMsg *msg; -- struct _alarm_client_msg *list; -+ struct _alarm_client_msg *msg; - -- /* These two structures will be freed by the msg destroy function*/ -- msg = malloc (sizeof (AlarmMsg)); -- msg->receive_msg = alarm_queue_remove_async; -- -- list = malloc (sizeof (struct _alarm_client_msg)); -- list->client = client; -- msg->data = list; -+ msg = g_slice_new (struct _alarm_client_msg); -+ msg->header.func = (MessageFunc) alarm_queue_remove_async; -+ msg->client = client; - -- d(printf("%s:%d (alarm_queue_remove_client) - Posting a task\n",__FILE__, __LINE__)); -- e_thread_put(alarm_operation_thread, (EMsg *)msg); -+ message_push ((Message *) msg); - } - - /* Update non-time related variables for various structures on modification of an existing component From 0aa7fad574568ac2a74064d151c4b886ed460a9d Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Thu, 30 Aug 2007 03:11:41 +0000 Subject: [PATCH 10/19] - Revise patch for GNOME bug #362638 to fix GNOME bug #357175 (Evolution fails to close after IMAP alert has been displayed). --- evolution-2.8.1-kill-ethread.patch | 148 +++++++++++++++++------------ evolution.spec | 6 +- 2 files changed, 92 insertions(+), 62 deletions(-) diff --git a/evolution-2.8.1-kill-ethread.patch b/evolution-2.8.1-kill-ethread.patch index cb537de..78425b3 100644 --- a/evolution-2.8.1-kill-ethread.patch +++ b/evolution-2.8.1-kill-ethread.patch @@ -1,6 +1,6 @@ diff -up evolution-2.10.3/mail/mail-send-recv.c.kill-ethread evolution-2.10.3/mail/mail-send-recv.c --- evolution-2.10.3/mail/mail-send-recv.c.kill-ethread 2007-06-30 15:22:35.000000000 -0400 -+++ evolution-2.10.3/mail/mail-send-recv.c 2007-08-29 18:13:23.000000000 -0400 ++++ evolution-2.10.3/mail/mail-send-recv.c 2007-08-29 22:51:25.000000000 -0400 @@ -725,23 +725,22 @@ receive_get_folder(CamelFilterDriver *d, /* ********************************************************************** */ @@ -85,7 +85,7 @@ diff -up evolution-2.10.3/mail/mail-send-recv.c.kill-ethread evolution-2.10.3/ma } diff -up evolution-2.10.3/mail/mail-component.c.kill-ethread evolution-2.10.3/mail/mail-component.c --- evolution-2.10.3/mail/mail-component.c.kill-ethread 2007-05-27 15:55:12.000000000 -0400 -+++ evolution-2.10.3/mail/mail-component.c 2007-08-29 18:13:23.000000000 -0400 ++++ evolution-2.10.3/mail/mail-component.c 2007-08-29 22:51:25.000000000 -0400 @@ -982,7 +982,7 @@ impl_handleURI (PortableServer_Servant s if (camel_url_get_param(url, "uid") != NULL) { char *curi = em_uri_to_camel(uri); @@ -97,7 +97,7 @@ diff -up evolution-2.10.3/mail/mail-component.c.kill-ethread evolution-2.10.3/ma g_warning("email uri's must include a uid parameter"); diff -up evolution-2.10.3/mail/mail-ops.c.kill-ethread evolution-2.10.3/mail/mail-ops.c --- evolution-2.10.3/mail/mail-ops.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.3/mail/mail-ops.c 2007-08-29 18:17:08.000000000 -0400 ++++ evolution-2.10.3/mail/mail-ops.c 2007-08-29 22:51:25.000000000 -0400 @@ -75,7 +75,7 @@ /* used for both just filtering a folder + uid's, and for filtering a whole folder */ /* used both for fetching mail, and for filtering mail */ @@ -2147,7 +2147,7 @@ diff -up evolution-2.10.3/mail/mail-ops.c.kill-ethread evolution-2.10.3/mail/mai } diff -up evolution-2.10.3/mail/em-folder-utils.c.kill-ethread evolution-2.10.3/mail/em-folder-utils.c --- evolution-2.10.3/mail/em-folder-utils.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.3/mail/em-folder-utils.c 2007-08-29 18:13:23.000000000 -0400 ++++ evolution-2.10.3/mail/em-folder-utils.c 2007-08-29 22:51:25.000000000 -0400 @@ -84,7 +84,7 @@ emfu_is_special_local_folder (const char } @@ -2377,7 +2377,7 @@ diff -up evolution-2.10.3/mail/em-folder-utils.c.kill-ethread evolution-2.10.3/m } diff -up evolution-2.10.3/mail/importers/elm-importer.c.kill-ethread evolution-2.10.3/mail/importers/elm-importer.c --- evolution-2.10.3/mail/importers/elm-importer.c.kill-ethread 2007-04-09 09:09:26.000000000 -0400 -+++ evolution-2.10.3/mail/importers/elm-importer.c 2007-08-29 18:13:23.000000000 -0400 ++++ evolution-2.10.3/mail/importers/elm-importer.c 2007-08-29 22:51:25.000000000 -0400 @@ -51,7 +51,7 @@ #define d(x) x @@ -2478,7 +2478,7 @@ diff -up evolution-2.10.3/mail/importers/elm-importer.c.kill-ethread evolution-2 } diff -up evolution-2.10.3/mail/importers/mail-importer.c.kill-ethread evolution-2.10.3/mail/importers/mail-importer.c --- evolution-2.10.3/mail/importers/mail-importer.c.kill-ethread 2007-04-09 09:09:26.000000000 -0400 -+++ evolution-2.10.3/mail/importers/mail-importer.c 2007-08-29 18:13:23.000000000 -0400 ++++ evolution-2.10.3/mail/importers/mail-importer.c 2007-08-29 22:51:25.000000000 -0400 @@ -132,7 +132,7 @@ struct _BonoboObject *mail_importer_fact } @@ -2617,7 +2617,7 @@ diff -up evolution-2.10.3/mail/importers/mail-importer.c.kill-ethread evolution- struct _import_folders_data { diff -up evolution-2.10.3/mail/importers/pine-importer.c.kill-ethread evolution-2.10.3/mail/importers/pine-importer.c --- evolution-2.10.3/mail/importers/pine-importer.c.kill-ethread 2007-04-09 09:09:26.000000000 -0400 -+++ evolution-2.10.3/mail/importers/pine-importer.c 2007-08-29 18:13:23.000000000 -0400 ++++ evolution-2.10.3/mail/importers/pine-importer.c 2007-08-29 22:51:25.000000000 -0400 @@ -56,7 +56,7 @@ #define d(x) x @@ -2718,8 +2718,8 @@ diff -up evolution-2.10.3/mail/importers/pine-importer.c.kill-ethread evolution- return id; } diff -up evolution-2.10.3/mail/em-utils.c.kill-ethread evolution-2.10.3/mail/em-utils.c ---- evolution-2.10.3/mail/em-utils.c.kill-ethread 2007-08-29 18:12:19.000000000 -0400 -+++ evolution-2.10.3/mail/em-utils.c 2007-08-29 18:13:23.000000000 -0400 +--- evolution-2.10.3/mail/em-utils.c.kill-ethread 2007-08-29 22:51:25.000000000 -0400 ++++ evolution-2.10.3/mail/em-utils.c 2007-08-29 22:51:25.000000000 -0400 @@ -1915,7 +1915,7 @@ em_utils_in_addressbook(CamelInternetAdd ESource *source = s->data; GList *contacts; @@ -2731,7 +2731,7 @@ diff -up evolution-2.10.3/mail/em-utils.c.kill-ethread evolution-2.10.3/mail/em- diff -up evolution-2.10.3/mail/mail-vfolder.c.kill-ethread evolution-2.10.3/mail/mail-vfolder.c --- evolution-2.10.3/mail/mail-vfolder.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.3/mail/mail-vfolder.c 2007-08-29 18:13:23.000000000 -0400 ++++ evolution-2.10.3/mail/mail-vfolder.c 2007-08-29 22:51:25.000000000 -0400 @@ -21,7 +21,7 @@ */ @@ -2968,7 +2968,7 @@ diff -up evolution-2.10.3/mail/mail-vfolder.c.kill-ethread evolution-2.10.3/mail to = em_uri_from_camel(cto); diff -up evolution-2.10.3/mail/em-format-html.c.kill-ethread evolution-2.10.3/mail/em-format-html.c --- evolution-2.10.3/mail/em-format-html.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.3/mail/em-format-html.c 2007-08-29 18:13:23.000000000 -0400 ++++ evolution-2.10.3/mail/em-format-html.c 2007-08-29 22:51:25.000000000 -0400 @@ -166,7 +166,7 @@ efh_gtkhtml_destroy(GtkHTML *html, EMFor if (efh->priv->format_timeout_id != 0) { g_source_remove(efh->priv->format_timeout_id); @@ -3095,7 +3095,7 @@ diff -up evolution-2.10.3/mail/em-format-html.c.kill-ethread evolution-2.10.3/ma m->format_source = emfsource; diff -up evolution-2.10.3/mail/em-folder-properties.c.kill-ethread evolution-2.10.3/mail/em-folder-properties.c --- evolution-2.10.3/mail/em-folder-properties.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.3/mail/em-folder-properties.c 2007-08-29 18:13:23.000000000 -0400 ++++ evolution-2.10.3/mail/em-folder-properties.c 2007-08-29 22:51:25.000000000 -0400 @@ -386,7 +386,7 @@ em_folder_properties_show(GtkWindow *par } @@ -3107,7 +3107,7 @@ diff -up evolution-2.10.3/mail/em-folder-properties.c.kill-ethread evolution-2.1 } diff -up evolution-2.10.3/mail/em-folder-tree.c.kill-ethread evolution-2.10.3/mail/em-folder-tree.c --- evolution-2.10.3/mail/em-folder-tree.c.kill-ethread 2007-05-28 09:06:42.000000000 -0400 -+++ evolution-2.10.3/mail/em-folder-tree.c 2007-08-29 18:15:11.000000000 -0400 ++++ evolution-2.10.3/mail/em-folder-tree.c 2007-08-29 22:51:25.000000000 -0400 @@ -834,7 +834,7 @@ fail: /* TODO: Merge the drop handling code/menu's into one spot using a popup target for details */ /* Drop handling */ @@ -3344,7 +3344,7 @@ diff -up evolution-2.10.3/mail/em-folder-tree.c.kill-ethread evolution-2.10.3/ma static gboolean diff -up evolution-2.10.3/mail/em-folder-browser.c.kill-ethread evolution-2.10.3/mail/em-folder-browser.c --- evolution-2.10.3/mail/em-folder-browser.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.3/mail/em-folder-browser.c 2007-08-29 18:13:23.000000000 -0400 ++++ evolution-2.10.3/mail/em-folder-browser.c 2007-08-29 22:51:25.000000000 -0400 @@ -838,7 +838,7 @@ get_view_query (ESearchBar *esb) @@ -3448,7 +3448,7 @@ diff -up evolution-2.10.3/mail/em-folder-browser.c.kill-ethread evolution-2.10.3 } diff -up evolution-2.10.3/mail/message-list.c.kill-ethread evolution-2.10.3/mail/message-list.c --- evolution-2.10.3/mail/message-list.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.3/mail/message-list.c 2007-08-29 18:13:23.000000000 -0400 ++++ evolution-2.10.3/mail/message-list.c 2007-08-29 22:51:25.000000000 -0400 @@ -1802,7 +1802,7 @@ ml_tree_drag_data_get (ETree *tree, int /* TODO: merge this with the folder tree stuff via empopup targets */ /* Drop handling */ @@ -3727,7 +3727,7 @@ diff -up evolution-2.10.3/mail/message-list.c.kill-ethread evolution-2.10.3/mail m->hideexpr = g_strdup (hideexpr); diff -up evolution-2.10.3/mail/em-sync-stream.h.kill-ethread evolution-2.10.3/mail/em-sync-stream.h --- evolution-2.10.3/mail/em-sync-stream.h.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.3/mail/em-sync-stream.h 2007-08-29 18:13:23.000000000 -0400 ++++ evolution-2.10.3/mail/em-sync-stream.h 2007-08-29 22:51:25.000000000 -0400 @@ -29,41 +29,45 @@ requests are always handled in the main #ifndef EM_SYNC_STREAM_H #define EM_SYNC_STREAM_H @@ -3806,7 +3806,7 @@ diff -up evolution-2.10.3/mail/em-sync-stream.h.kill-ethread evolution-2.10.3/ma #endif /* EM_SYNC_STREAM_H */ diff -up evolution-2.10.3/mail/em-format-html-print.c.kill-ethread evolution-2.10.3/mail/em-format-html-print.c --- evolution-2.10.3/mail/em-format-html-print.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.3/mail/em-format-html-print.c 2007-08-29 18:15:39.000000000 -0400 ++++ evolution-2.10.3/mail/em-format-html-print.c 2007-08-29 22:51:25.000000000 -0400 @@ -262,7 +262,7 @@ int em_format_html_print_message(EMForma g_object_ref(source); g_object_ref(efhp); @@ -3818,7 +3818,7 @@ diff -up evolution-2.10.3/mail/em-format-html-print.c.kill-ethread evolution-2.1 } diff -up evolution-2.10.3/mail/em-sync-stream.c.kill-ethread evolution-2.10.3/mail/em-sync-stream.c --- evolution-2.10.3/mail/em-sync-stream.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.3/mail/em-sync-stream.c 2007-08-29 18:13:23.000000000 -0400 ++++ evolution-2.10.3/mail/em-sync-stream.c 2007-08-29 22:51:25.000000000 -0400 @@ -25,42 +25,17 @@ #include #endif @@ -4246,7 +4246,7 @@ diff -up evolution-2.10.3/mail/em-sync-stream.c.kill-ethread evolution-2.10.3/ma } diff -up evolution-2.10.3/mail/em-subscribe-editor.c.kill-ethread evolution-2.10.3/mail/em-subscribe-editor.c --- evolution-2.10.3/mail/em-subscribe-editor.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.3/mail/em-subscribe-editor.c 2007-08-29 18:13:23.000000000 -0400 ++++ evolution-2.10.3/mail/em-subscribe-editor.c 2007-08-29 22:51:25.000000000 -0400 @@ -175,7 +175,7 @@ sub_unref(EMSubscribe *sub) /* ** Subscribe folder operation **************************************** */ @@ -4464,7 +4464,7 @@ diff -up evolution-2.10.3/mail/em-subscribe-editor.c.kill-ethread evolution-2.10 } diff -up evolution-2.10.3/mail/mail-mt.h.kill-ethread evolution-2.10.3/mail/mail-mt.h --- evolution-2.10.3/mail/mail-mt.h.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.3/mail/mail-mt.h 2007-08-29 18:13:23.000000000 -0400 ++++ evolution-2.10.3/mail/mail-mt.h 2007-08-29 22:51:25.000000000 -0400 @@ -23,47 +23,64 @@ #ifndef _MAIL_MT #define _MAIL_MT @@ -4578,7 +4578,7 @@ diff -up evolution-2.10.3/mail/mail-mt.h.kill-ethread evolution-2.10.3/mail/mail extern MailAsyncEvent *mail_async_event; diff -up evolution-2.10.3/mail/mail-ops.h.kill-ethread evolution-2.10.3/mail/mail-ops.h --- evolution-2.10.3/mail/mail-ops.h.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.3/mail/mail-ops.h 2007-08-29 18:13:23.000000000 -0400 ++++ evolution-2.10.3/mail/mail-ops.h 2007-08-29 22:51:25.000000000 -0400 @@ -30,13 +30,14 @@ extern "C" { #pragma } #endif /* __cplusplus */ @@ -4621,7 +4621,7 @@ diff -up evolution-2.10.3/mail/mail-ops.h.kill-ethread evolution-2.10.3/mail/mai int mail_get_store (const char *uri, CamelOperation *op, diff -up evolution-2.10.3/mail/em-composer-utils.c.kill-ethread evolution-2.10.3/mail/em-composer-utils.c --- evolution-2.10.3/mail/em-composer-utils.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.3/mail/em-composer-utils.c 2007-08-29 18:13:23.000000000 -0400 ++++ evolution-2.10.3/mail/em-composer-utils.c 2007-08-29 22:51:25.000000000 -0400 @@ -534,7 +534,7 @@ em_utils_composer_save_draft_cb (EMsgCom strcmp (account->drafts_folder_uri, default_drafts_folder_uri) != 0) { int id; @@ -4667,7 +4667,7 @@ diff -up evolution-2.10.3/mail/em-composer-utils.c.kill-ethread evolution-2.10.3 } diff -up evolution-2.10.3/mail/mail-folder-cache.c.kill-ethread evolution-2.10.3/mail/mail-folder-cache.c --- evolution-2.10.3/mail/mail-folder-cache.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.3/mail/mail-folder-cache.c 2007-08-29 18:13:23.000000000 -0400 ++++ evolution-2.10.3/mail/mail-folder-cache.c 2007-08-29 22:51:25.000000000 -0400 @@ -843,15 +843,14 @@ update_folders(CamelStore *store, CamelF @@ -4755,7 +4755,7 @@ diff -up evolution-2.10.3/mail/mail-folder-cache.c.kill-ethread evolution-2.10.3 diff -up evolution-2.10.3/mail/em-folder-view.c.kill-ethread evolution-2.10.3/mail/em-folder-view.c --- evolution-2.10.3/mail/em-folder-view.c.kill-ethread 2007-06-17 23:30:46.000000000 -0400 -+++ evolution-2.10.3/mail/em-folder-view.c 2007-08-29 18:14:08.000000000 -0400 ++++ evolution-2.10.3/mail/em-folder-view.c 2007-08-29 22:51:25.000000000 -0400 @@ -68,6 +68,7 @@ #include @@ -4802,7 +4802,7 @@ diff -up evolution-2.10.3/mail/em-folder-view.c.kill-ethread evolution-2.10.3/ma g_free(emfv->priv->selected_uid); diff -up evolution-2.10.3/mail/mail-session.c.kill-ethread evolution-2.10.3/mail/mail-session.c --- evolution-2.10.3/mail/mail-session.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.3/mail/mail-session.c 2007-08-29 18:13:23.000000000 -0400 ++++ evolution-2.10.3/mail/mail-session.c 2007-08-29 22:51:25.000000000 -0400 @@ -35,7 +35,7 @@ #include @@ -5101,7 +5101,7 @@ diff -up evolution-2.10.3/mail/mail-session.c.kill-ethread evolution-2.10.3/mail } diff -up evolution-2.10.3/mail/mail-mt.c.kill-ethread evolution-2.10.3/mail/mail-mt.c --- evolution-2.10.3/mail/mail-mt.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.3/mail/mail-mt.c 2007-08-29 18:13:23.000000000 -0400 ++++ evolution-2.10.3/mail/mail-mt.c 2007-08-29 22:51:25.000000000 -0400 @@ -29,8 +29,8 @@ #include #include @@ -6183,7 +6183,7 @@ diff -up evolution-2.10.3/mail/mail-mt.c.kill-ethread evolution-2.10.3/mail/mail /* ******************** */ diff -up evolution-2.10.3/plugins/folder-unsubscribe/folder-unsubscribe.c.kill-ethread evolution-2.10.3/plugins/folder-unsubscribe/folder-unsubscribe.c --- evolution-2.10.3/plugins/folder-unsubscribe/folder-unsubscribe.c.kill-ethread 2007-04-09 09:09:11.000000000 -0400 -+++ evolution-2.10.3/plugins/folder-unsubscribe/folder-unsubscribe.c 2007-08-29 18:13:23.000000000 -0400 ++++ evolution-2.10.3/plugins/folder-unsubscribe/folder-unsubscribe.c 2007-08-29 22:51:25.000000000 -0400 @@ -44,32 +44,30 @@ void org_gnome_mail_folder_unsubscribe ( @@ -6265,7 +6265,7 @@ diff -up evolution-2.10.3/plugins/folder-unsubscribe/folder-unsubscribe.c.kill-e } diff -up evolution-2.10.3/plugins/mark-all-read/mark-all-read.c.kill-ethread evolution-2.10.3/plugins/mark-all-read/mark-all-read.c --- evolution-2.10.3/plugins/mark-all-read/mark-all-read.c.kill-ethread 2007-05-27 14:21:10.000000000 -0400 -+++ evolution-2.10.3/plugins/mark-all-read/mark-all-read.c 2007-08-29 18:13:23.000000000 -0400 ++++ evolution-2.10.3/plugins/mark-all-read/mark-all-read.c 2007-08-29 22:51:25.000000000 -0400 @@ -44,7 +44,7 @@ org_gnome_mark_all_read (EPlugin *ep, EM return; } @@ -6277,7 +6277,7 @@ diff -up evolution-2.10.3/plugins/mark-all-read/mark-all-read.c.kill-ethread evo static void diff -up evolution-2.10.3/plugins/exchange-operations/exchange-folder.c.kill-ethread evolution-2.10.3/plugins/exchange-operations/exchange-folder.c --- evolution-2.10.3/plugins/exchange-operations/exchange-folder.c.kill-ethread 2007-05-25 02:43:33.000000000 -0400 -+++ evolution-2.10.3/plugins/exchange-operations/exchange-folder.c 2007-08-29 18:13:23.000000000 -0400 ++++ evolution-2.10.3/plugins/exchange-operations/exchange-folder.c 2007-08-29 22:51:25.000000000 -0400 @@ -140,7 +140,7 @@ org_gnome_exchange_folder_inbox_unsubscr inbox_physical_uri = e_folder_get_physical_uri (inbox); @@ -6289,7 +6289,7 @@ diff -up evolution-2.10.3/plugins/exchange-operations/exchange-folder.c.kill-eth } diff -up evolution-2.10.3/plugins/save-attachments/save-attachments.c.kill-ethread evolution-2.10.3/plugins/save-attachments/save-attachments.c --- evolution-2.10.3/plugins/save-attachments/save-attachments.c.kill-ethread 2007-04-09 09:09:15.000000000 -0400 -+++ evolution-2.10.3/plugins/save-attachments/save-attachments.c 2007-08-29 18:13:23.000000000 -0400 ++++ evolution-2.10.3/plugins/save-attachments/save-attachments.c 2007-08-29 22:51:25.000000000 -0400 @@ -407,5 +407,5 @@ org_gnome_save_attachments_save(EPlugin camel_object_ref(data->folder); data->uid = g_strdup(target->uids->pdata[0]); @@ -6299,7 +6299,7 @@ diff -up evolution-2.10.3/plugins/save-attachments/save-attachments.c.kill-ethre } diff -up evolution-2.10.3/plugins/mailing-list-actions/mailing-list-actions.c.kill-ethread evolution-2.10.3/plugins/mailing-list-actions/mailing-list-actions.c --- evolution-2.10.3/plugins/mailing-list-actions/mailing-list-actions.c.kill-ethread 2007-04-09 09:09:14.000000000 -0400 -+++ evolution-2.10.3/plugins/mailing-list-actions/mailing-list-actions.c 2007-08-29 18:13:23.000000000 -0400 ++++ evolution-2.10.3/plugins/mailing-list-actions/mailing-list-actions.c 2007-08-29 22:51:25.000000000 -0400 @@ -89,7 +89,7 @@ void emla_list_action (EPlugin *item, EM data->uri = strdup (sel->uri); @@ -6311,7 +6311,7 @@ diff -up evolution-2.10.3/plugins/mailing-list-actions/mailing-list-actions.c.ki void emla_list_action_do (CamelFolder *folder, const char *uid, CamelMimeMessage *msg, void *data) diff -up evolution-2.10.3/plugins/groupwise-features/share-folder-common.c.kill-ethread evolution-2.10.3/plugins/groupwise-features/share-folder-common.c --- evolution-2.10.3/plugins/groupwise-features/share-folder-common.c.kill-ethread 2007-04-09 09:09:12.000000000 -0400 -+++ evolution-2.10.3/plugins/groupwise-features/share-folder-common.c 2007-08-29 18:13:23.000000000 -0400 ++++ evolution-2.10.3/plugins/groupwise-features/share-folder-common.c 2007-08-29 22:51:25.000000000 -0400 @@ -121,7 +121,7 @@ shared_folder_abort (EPlugin *ep, EConfi } @@ -6411,7 +6411,7 @@ diff -up evolution-2.10.3/plugins/groupwise-features/share-folder-common.c.kill- } diff -up evolution-2.10.3/calendar/gui/alarm-notify/alarm-notify.h.kill-ethread evolution-2.10.3/calendar/gui/alarm-notify/alarm-notify.h --- evolution-2.10.3/calendar/gui/alarm-notify/alarm-notify.h.kill-ethread 2007-04-09 09:10:29.000000000 -0400 -+++ evolution-2.10.3/calendar/gui/alarm-notify/alarm-notify.h 2007-08-29 18:13:23.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/alarm-notify/alarm-notify.h 2007-08-29 22:51:25.000000000 -0400 @@ -39,19 +39,6 @@ typedef struct _AlarmNotifyClass AlarmNo typedef struct _AlarmNotifyPrivate AlarmNotifyPrivate; @@ -6434,7 +6434,7 @@ diff -up evolution-2.10.3/calendar/gui/alarm-notify/alarm-notify.h.kill-ethread diff -up evolution-2.10.3/calendar/gui/alarm-notify/alarm-notify.c.kill-ethread evolution-2.10.3/calendar/gui/alarm-notify/alarm-notify.c --- evolution-2.10.3/calendar/gui/alarm-notify/alarm-notify.c.kill-ethread 2007-04-09 09:10:29.000000000 -0400 -+++ evolution-2.10.3/calendar/gui/alarm-notify/alarm-notify.c 2007-08-29 18:13:23.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/alarm-notify/alarm-notify.c 2007-08-29 22:51:25.000000000 -0400 @@ -45,10 +45,6 @@ struct _AlarmNotifyPrivate { GMutex *mutex; }; @@ -6549,7 +6549,7 @@ diff -up evolution-2.10.3/calendar/gui/alarm-notify/alarm-notify.c.kill-ethread static void diff -up evolution-2.10.3/calendar/gui/alarm-notify/alarm-queue.c.kill-ethread evolution-2.10.3/calendar/gui/alarm-notify/alarm-queue.c --- evolution-2.10.3/calendar/gui/alarm-notify/alarm-queue.c.kill-ethread 2007-04-09 09:10:29.000000000 -0400 -+++ evolution-2.10.3/calendar/gui/alarm-notify/alarm-queue.c 2007-08-29 18:13:23.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/alarm-notify/alarm-queue.c 2007-08-29 23:10:45.000000000 -0400 @@ -115,9 +115,6 @@ static int tray_blink_id = -1; static int tray_blink_state = FALSE; static AlarmNotify *an; @@ -6763,8 +6763,7 @@ diff -up evolution-2.10.3/calendar/gui/alarm-notify/alarm-queue.c.kill-ethread e { - AlarmMsg *msg; - struct _query_msg *list; -+ struct _query_msg *msg; - +- - /* These two structures will be freed by the msg destroy function*/ - msg = malloc (sizeof (AlarmMsg)); - msg->receive_msg = query_objects_removed_async; @@ -6774,7 +6773,8 @@ diff -up evolution-2.10.3/calendar/gui/alarm-notify/alarm-queue.c.kill-ethread e - list->objects = duplicate_ecal (objects); - list->data = data; - msg->data = list; -- ++ struct _query_msg *msg; + - d(printf("%s:%d (query_objects_removed_cb) - Posting a task\n",__FILE__, __LINE__)); - e_thread_put(alarm_operation_thread, (EMsg *)msg); + msg = g_slice_new (struct _query_msg); @@ -6825,12 +6825,12 @@ diff -up evolution-2.10.3/calendar/gui/alarm-notify/alarm-queue.c.kill-ethread e { - AlarmMsg *msg; - struct _query_msg *list; -- ++ struct _query_msg *msg; + - /* These two structures will be freed by the msg destroy function*/ - msg = malloc (sizeof (AlarmMsg)); - msg->receive_msg = on_dialog_objs_removed_async; -+ struct _query_msg *msg; - +- - list = malloc (sizeof (struct _query_msg)); - list->client = client; - list->objects = objects; @@ -6878,11 +6878,12 @@ diff -up evolution-2.10.3/calendar/gui/alarm-notify/alarm-queue.c.kill-ethread e - /* These two structures will be freed by the msg destroy function*/ - msg = malloc (sizeof (AlarmMsg)); - msg->receive_msg = tray_list_remove_cqa_async; -+ struct _tray_cqa_msg *msg; - +- - list = malloc (sizeof (struct _tray_cqa_msg)); - list->cqa = cqa; - msg->data = list; ++ struct _tray_cqa_msg *msg; ++ + msg = g_slice_new (struct _tray_cqa_msg); + msg->header.func = (MessageFunc) tray_list_remove_cqa_async; + msg->cqa = cqa; @@ -6957,11 +6958,12 @@ diff -up evolution-2.10.3/calendar/gui/alarm-notify/alarm-queue.c.kill-ethread e - /* These two structures will be freed by the msg destroy function*/ - msg = malloc (sizeof (AlarmMsg)); - msg->receive_msg = tray_list_remove_data_async; -+ struct _tray_msg *msg; - +- - list = malloc (sizeof (struct _tray_msg)); - list->data = data; - msg->data = list; ++ struct _tray_msg *msg; ++ + msg = g_slice_new (struct _tray_msg); + msg->header.func = (MessageFunc) tray_list_remove_data_async; + msg->data = data; @@ -6998,16 +7000,17 @@ diff -up evolution-2.10.3/calendar/gui/alarm-notify/alarm-queue.c.kill-ethread e - /* These two structures will be freed by the msg destroy function*/ - msg = malloc (sizeof (AlarmMsg)); - msg->receive_msg = tray_list_add_async; -+ msg = g_slice_new (struct _tray_msg); -+ msg->header.func = (MessageFunc) tray_list_add_async; -+ msg->data = data; - +- - list = malloc (sizeof (struct _tray_msg)); - list->data = data; - msg->data = list; - - d(printf("%s:%d (tray_list_add_new) - Posting a task\n",__FILE__, __LINE__)); - e_thread_put(alarm_operation_thread, (EMsg *)msg); ++ msg = g_slice_new (struct _tray_msg); ++ msg->header.func = (MessageFunc) tray_list_add_async; ++ msg->data = data; ++ + message_push ((Message *) msg); } @@ -7022,17 +7025,17 @@ diff -up evolution-2.10.3/calendar/gui/alarm-notify/alarm-queue.c.kill-ethread e - /* These two structures will be freed by the msg destroy function*/ - msg = malloc (sizeof (AlarmMsg)); - msg->receive_msg = midnight_refresh_async; -+ struct _midnight_refresh_msg *msg; - +- - list = malloc (sizeof (struct _midnight_refresh_msg)); -+ msg = g_slice_new (struct _midnight_refresh_msg); -+ msg->header.func = (MessageFunc) midnight_refresh_async; -+ msg->remove = FALSE; ++ struct _midnight_refresh_msg *msg; - list->remove = FALSE; - /* We dont need it. So set it to NULL */ - msg->data = list; -- ++ msg = g_slice_new (struct _midnight_refresh_msg); ++ msg->header.func = (MessageFunc) midnight_refresh_async; ++ msg->remove = FALSE; + - d(printf("%s:%d (check_midnight_refresh) - Posting a task to refresh\n",__FILE__, __LINE__)); - e_thread_put(alarm_operation_thread, (EMsg *)msg); + message_push ((Message *) msg); @@ -7078,15 +7081,15 @@ diff -up evolution-2.10.3/calendar/gui/alarm-notify/alarm-queue.c.kill-ethread e - /* These two structures will be freed by the msg destroy function*/ - msg = malloc (sizeof (AlarmMsg)); - msg->receive_msg = alarm_queue_add_async; -+ msg = g_slice_new (struct _alarm_client_msg); -+ msg->header.func = (MessageFunc) alarm_queue_add_async; -+ msg->client = g_object_ref (client); - +- - list = malloc (sizeof (struct _alarm_client_msg)); - list->client = client; - g_object_ref (client); - msg->data = list; -- ++ msg = g_slice_new (struct _alarm_client_msg); ++ msg->header.func = (MessageFunc) alarm_queue_add_async; ++ msg->client = g_object_ref (client); + - d(printf("%s:%d (alarm_queue_add_client) - Posting a task\n",__FILE__, __LINE__)); - e_thread_put(alarm_operation_thread, (EMsg *)msg); + message_push ((Message *) msg); @@ -7107,7 +7110,7 @@ diff -up evolution-2.10.3/calendar/gui/alarm-notify/alarm-queue.c.kill-ethread e g_return_if_fail (alarm_queue_inited); g_return_if_fail (client != NULL); -@@ -2148,6 +2132,8 @@ alarm_queue_remove_async (EThread *e, Al +@@ -2148,24 +2132,20 @@ alarm_queue_remove_async (EThread *e, Al g_free (ca); g_hash_table_remove (client_alarms_hash, client); @@ -7116,3 +7119,26 @@ diff -up evolution-2.10.3/calendar/gui/alarm-notify/alarm-queue.c.kill-ethread e } void + alarm_queue_remove_client (ECal *client) + { +- AlarmMsg *msg; +- struct _alarm_client_msg *list; ++ struct _alarm_client_msg *msg; + +- /* These two structures will be freed by the msg destroy function*/ +- msg = malloc (sizeof (AlarmMsg)); +- msg->receive_msg = alarm_queue_remove_async; +- +- list = malloc (sizeof (struct _alarm_client_msg)); +- list->client = client; +- msg->data = list; ++ msg = g_slice_new (struct _alarm_client_msg); ++ msg->header.func = (MessageFunc) alarm_queue_remove_async; ++ msg->client = client; + +- d(printf("%s:%d (alarm_queue_remove_client) - Posting a task\n",__FILE__, __LINE__)); +- e_thread_put(alarm_operation_thread, (EMsg *)msg); ++ message_push ((Message *) msg); + } + + /* Update non-time related variables for various structures on modification of an existing component diff --git a/evolution.spec b/evolution.spec index a516a4b..128c5f3 100644 --- a/evolution.spec +++ b/evolution.spec @@ -47,7 +47,7 @@ Name: evolution Version: 2.10.3 -Release: 3%{?dist} +Release: 4%{?dist} License: GPL Group: Applications/Productivity Summary: GNOME's next-generation groupware suite @@ -751,6 +751,10 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/evolution/%{evo_major}/libmenus.so %changelog +* Wed Aug 29 2007 Matthew Barnes - 2.10.3-4.fc7 +- Revise patch for GNOME bug #362638 to fix GNOME bug #357175 + (Evolution fails to close after IMAP alert has been displayed). + * Fri Jul 27 2007 Matthew Barnes - 2.10.3-3.fc7 - Add patch for GNOME bug #380534 (clarify version requirements). From 11e4fb193ce8f743db9e27b43f4f316e0734b000 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Thu, 30 Aug 2007 04:09:21 +0000 Subject: [PATCH 11/19] - Revise patch for GNOME bug #417999 to fix GNOME bug #447591 (Automatic Contacts combo boxes don't work). --- evolution-2.10.0-e-source-combo-box.patch | 361 ++++++++++++++++------ evolution.spec | 6 +- 2 files changed, 269 insertions(+), 98 deletions(-) diff --git a/evolution-2.10.0-e-source-combo-box.patch b/evolution-2.10.0-e-source-combo-box.patch index 43b5d69..6812912 100644 --- a/evolution-2.10.0-e-source-combo-box.patch +++ b/evolution-2.10.0-e-source-combo-box.patch @@ -1,5 +1,6 @@ ---- evolution-2.10.0/widgets/misc/e-pilot-settings.c.e-source-combo-box 2007-01-03 10:34:47.000000000 -0500 -+++ evolution-2.10.0/widgets/misc/e-pilot-settings.c 2007-03-13 16:56:41.000000000 -0400 +diff -up evolution-2.10.3/widgets/misc/e-pilot-settings.c.e-source-combo-box evolution-2.10.3/widgets/misc/e-pilot-settings.c +--- evolution-2.10.3/widgets/misc/e-pilot-settings.c.e-source-combo-box 2007-04-09 09:10:24.000000000 -0400 ++++ evolution-2.10.3/widgets/misc/e-pilot-settings.c 2007-08-29 23:57:36.000000000 -0400 @@ -27,7 +27,7 @@ #include @@ -9,7 +10,7 @@ #include "e-pilot-settings.h" struct _EPilotSettingsPrivate -@@ -102,7 +102,7 @@ +@@ -102,7 +102,7 @@ build_ui (EPilotSettings *ps, ESourceLis lbl = gtk_label_new (_("Sync with:")); gtk_misc_set_alignment (GTK_MISC (lbl), 0.0, 0.5); @@ -18,7 +19,7 @@ gtk_table_attach_defaults (GTK_TABLE (ps), lbl, 0, 1, 0, 1); gtk_table_attach_defaults (GTK_TABLE (ps), priv->source, 1, 2, 0, 1); gtk_widget_show (lbl); -@@ -152,8 +152,9 @@ +@@ -152,8 +152,9 @@ e_pilot_settings_get_source (EPilotSetti g_return_val_if_fail (E_IS_PILOT_SETTINGS (ps), FALSE); priv = ps->priv; @@ -30,7 +31,7 @@ } void -@@ -166,7 +167,8 @@ +@@ -166,7 +167,8 @@ e_pilot_settings_set_source (EPilotSetti priv = ps->priv; @@ -40,8 +41,9 @@ } gboolean ---- evolution-2.10.0/plugins/itip-formatter/itip-formatter.c.e-source-combo-box 2007-02-26 04:59:58.000000000 -0500 -+++ evolution-2.10.0/plugins/itip-formatter/itip-formatter.c 2007-03-13 16:56:41.000000000 -0400 +diff -up evolution-2.10.3/plugins/itip-formatter/itip-formatter.c.e-source-combo-box evolution-2.10.3/plugins/itip-formatter/itip-formatter.c +--- evolution-2.10.3/plugins/itip-formatter/itip-formatter.c.e-source-combo-box 2007-04-09 09:09:15.000000000 -0400 ++++ evolution-2.10.3/plugins/itip-formatter/itip-formatter.c 2007-08-29 23:56:32.000000000 -0400 @@ -39,7 +39,7 @@ #include #include @@ -51,8 +53,9 @@ #include #include #include ---- evolution-2.10.0/plugins/itip-formatter/itip-view.c.e-source-combo-box 2007-01-03 10:34:04.000000000 -0500 -+++ evolution-2.10.0/plugins/itip-formatter/itip-view.c 2007-03-13 16:56:41.000000000 -0400 +diff -up evolution-2.10.3/plugins/itip-formatter/itip-view.c.e-source-combo-box evolution-2.10.3/plugins/itip-formatter/itip-view.c +--- evolution-2.10.3/plugins/itip-formatter/itip-view.c.e-source-combo-box 2007-04-09 09:09:15.000000000 -0400 ++++ evolution-2.10.3/plugins/itip-formatter/itip-view.c 2007-08-29 23:56:32.000000000 -0400 @@ -35,7 +35,7 @@ #include #include @@ -62,7 +65,7 @@ #include #include #include -@@ -104,8 +104,8 @@ +@@ -104,8 +104,8 @@ struct _ItipViewPrivate { char *description; GtkWidget *selector_box; @@ -73,7 +76,7 @@ ESourceList *source_list; GtkWidget *rsvp_box; -@@ -1664,10 +1664,12 @@ +@@ -1664,10 +1664,12 @@ itip_view_clear_lower_info_items (ItipVi } static void @@ -89,7 +92,7 @@ g_signal_emit (view, signals[SOURCE_SELECTED], 0, source); } -@@ -1684,40 +1686,42 @@ +@@ -1684,40 +1686,42 @@ itip_view_set_source_list (ItipView *vie if (priv->source_list) g_object_unref (priv->source_list); @@ -149,7 +152,7 @@ } ESourceList * -@@ -1743,10 +1747,11 @@ +@@ -1743,10 +1747,11 @@ itip_view_set_source (ItipView *view, ES priv = view->priv; @@ -163,7 +166,7 @@ } ESource * -@@ -1759,10 +1764,11 @@ +@@ -1759,10 +1764,11 @@ itip_view_get_source (ItipView *view) priv = view->priv; @@ -177,8 +180,9 @@ } void ---- evolution-2.10.0/plugins/bbdb/gaimbuddies.c.e-source-combo-box 2007-01-03 10:34:02.000000000 -0500 -+++ evolution-2.10.0/plugins/bbdb/gaimbuddies.c 2007-03-13 16:56:41.000000000 -0400 +diff -up evolution-2.10.3/plugins/bbdb/gaimbuddies.c.e-source-combo-box evolution-2.10.3/plugins/bbdb/gaimbuddies.c +--- evolution-2.10.3/plugins/bbdb/gaimbuddies.c.e-source-combo-box 2007-05-25 02:43:33.000000000 -0400 ++++ evolution-2.10.3/plugins/bbdb/gaimbuddies.c 2007-08-29 23:56:32.000000000 -0400 @@ -44,7 +44,7 @@ #include @@ -188,8 +192,9 @@ #include #include ---- evolution-2.10.0/plugins/bbdb/bbdb.c.e-source-combo-box 2007-01-03 10:34:02.000000000 -0500 -+++ evolution-2.10.0/plugins/bbdb/bbdb.c 2007-03-13 16:56:41.000000000 -0400 +diff -up evolution-2.10.3/plugins/bbdb/bbdb.c.e-source-combo-box evolution-2.10.3/plugins/bbdb/bbdb.c +--- evolution-2.10.3/plugins/bbdb/bbdb.c.e-source-combo-box 2007-06-30 15:29:42.000000000 -0400 ++++ evolution-2.10.3/plugins/bbdb/bbdb.c 2007-08-29 23:56:32.000000000 -0400 @@ -40,7 +40,7 @@ #include @@ -199,17 +204,93 @@ #include #include -@@ -341,7 +341,8 @@ +@@ -71,10 +71,49 @@ static gboolean bbdb_timeout (gpointer d + static void bbdb_do_it (EBook *book, const char *name, const char *email); + static void add_email_to_contact (EContact *contact, const char *email); + static void enable_toggled_cb (GtkWidget *widget, gpointer data); +-static void source_changed_cb (GtkWidget *widget, ESource *source, gpointer data); ++static void source_changed_cb (ESourceComboBox *source_combo_box, struct bbdb_stuff *stuff); + static GtkWidget *create_addressbook_option_menu (struct bbdb_stuff *stuff, int type); + static void cleanup_cb (GObject *o, gpointer data); + ++static ESource * ++find_esource_by_uri (ESourceList *source_list, const gchar *target_uri) ++{ ++ GSList *groups; ++ ++ /* XXX This would be unnecessary if the plugin had stored ++ * the addressbook's UID instead of the URI in GConf. ++ * Too late to change it now, I suppose. */ ++ ++ if (source_list == NULL || target_uri == NULL) ++ return NULL; ++ ++ groups = e_source_list_peek_groups (source_list); ++ ++ while (groups != NULL) { ++ GSList *sources; ++ ++ sources = e_source_group_peek_sources (groups->data); ++ ++ while (sources != NULL) { ++ gchar *uri; ++ gboolean match; ++ ++ uri = e_source_get_uri (sources->data); ++ match = (strcmp (uri, target_uri) == 0); ++ g_free (uri); ++ ++ if (match) ++ return sources->data; ++ ++ sources = g_slist_next (sources); ++ } ++ ++ groups = g_slist_next (groups); ++ } ++ ++ return NULL; ++} ++ + int + e_plugin_lib_enable (EPluginLib *ep, int enable) + { +@@ -265,8 +304,6 @@ bbdb_open_addressbook (int type) + char *uri; + EBook *book = NULL; + +- gboolean enable; +- + gboolean status; + GError *error = NULL; + +@@ -353,8 +390,23 @@ enable_toggled_cb (GtkWidget *widget, gp gtk_widget_set_sensitive (stuff->option_menu, active); if (active && !gconf_client_get_string (stuff->target->gconf, GCONF_KEY_WHICH_ADDRESSBOOK, NULL)) { - selected_source = e_source_option_menu_peek_selected (E_SOURCE_OPTION_MENU (stuff->option_menu)); +- gconf_client_set_string (stuff->target->gconf, GCONF_KEY_WHICH_ADDRESSBOOK, e_source_get_uri (selected_source), NULL); ++ const gchar *uri = NULL; ++ GError *error = NULL; ++ + selected_source = e_source_combo_box_get_active ( + E_SOURCE_COMBO_BOX (stuff->option_menu)); - gconf_client_set_string (stuff->target->gconf, GCONF_KEY_WHICH_ADDRESSBOOK, e_source_get_uri (selected_source), NULL); ++ if (selected_source != NULL) ++ uri = e_source_get_uri (selected_source); ++ ++ gconf_client_set_string ( ++ stuff->target->gconf, ++ GCONF_KEY_WHICH_ADDRESSBOOK, ++ uri, &error); ++ ++ if (error != NULL) { ++ g_warning ("%s", error->message); ++ g_error_free (error); ++ } } } -@@ -360,7 +361,8 @@ + +@@ -372,7 +424,8 @@ enable_gaim_toggled_cb (GtkWidget *widge gtk_widget_set_sensitive (stuff->gaim_option_menu, active); if (active && !gconf_client_get_string (stuff->target->gconf, GCONF_KEY_WHICH_ADDRESSBOOK_GAIM, NULL)) { @@ -219,15 +300,67 @@ gconf_client_set_string (stuff->target->gconf, GCONF_KEY_WHICH_ADDRESSBOOK_GAIM, e_source_get_uri (selected_source), NULL); } } -@@ -389,31 +391,32 @@ +@@ -384,48 +437,77 @@ synchronize_button_clicked_cb (GtkWidget + } + + static void +-source_changed_cb (GtkWidget *widget, ESource *source, gpointer data) ++source_changed_cb (ESourceComboBox *source_combo_box, ++ struct bbdb_stuff *stuff) + { +- struct bbdb_stuff *stuff = (struct bbdb_stuff *) data; +- +- gconf_client_set_string (stuff->target->gconf, GCONF_KEY_WHICH_ADDRESSBOOK, e_source_get_uri (source), NULL); ++ ESource *source; ++ GError *error = NULL; ++ ++ source = e_source_combo_box_get_active (source_combo_box); ++ g_return_if_fail (source != NULL); ++ ++ gconf_client_set_string ( ++ stuff->target->gconf, ++ GCONF_KEY_WHICH_ADDRESSBOOK, ++ e_source_get_uri (source), &error); ++ ++ if (error != NULL) { ++ g_warning ("%s", error->message); ++ g_error_free (error); ++ } + } + + static void +-gaim_source_changed_cb (GtkWidget *widget, ESource *source, gpointer data) ++gaim_source_changed_cb (ESourceComboBox *source_combo_box, ++ struct bbdb_stuff *stuff) + { +- struct bbdb_stuff *stuff = (struct bbdb_stuff *) data; +- gconf_client_set_string (stuff->target->gconf, GCONF_KEY_WHICH_ADDRESSBOOK_GAIM, e_source_get_uri (source), NULL); ++ ESource *source; ++ GError *error = NULL; ++ ++ source = e_source_combo_box_get_active (source_combo_box); ++ g_return_if_fail (source != NULL); ++ ++ gconf_client_set_string ( ++ stuff->target->gconf, ++ GCONF_KEY_WHICH_ADDRESSBOOK_GAIM, ++ e_source_get_uri (source), &error); ++ ++ if (error != NULL) { ++ g_warning ("%s", error->message); ++ g_error_free (error); ++ } + } + static GtkWidget * create_addressbook_option_menu (struct bbdb_stuff *stuff, int type) { - GtkWidget *menu; + GtkWidget *combo_box; ESourceList *source_list; - char *selected_source_uri; -- ESource *selected_source; +- char *selected_source_uri; + ESource *selected_source; ++ char *selected_source_uri; GConfClient *gconf = stuff->target->gconf; @@ -239,15 +372,18 @@ selected_source_uri = gconf_client_get_string (gconf, GCONF_KEY_WHICH_ADDRESSBOOK_GAIM, NULL); else selected_source_uri = gconf_client_get_string (gconf, GCONF_KEY_WHICH_ADDRESSBOOK, NULL); - if (selected_source_uri != NULL) { +- if (selected_source_uri != NULL) { - selected_source = e_source_new_with_absolute_uri ("", selected_source_uri); - e_source_option_menu_select (E_SOURCE_OPTION_MENU (menu), selected_source); +- g_free (selected_source_uri); +- } ++ selected_source = find_esource_by_uri ( ++ source_list, selected_source_uri); ++ g_free (selected_source_uri); ++ ++ if (selected_source != NULL) + e_source_combo_box_set_active ( -+ E_SOURCE_COMBO_BOX (combo_box), -+ e_source_new_with_absolute_uri ( -+ "", selected_source_uri)); - g_free (selected_source_uri); - } ++ E_SOURCE_COMBO_BOX (combo_box), selected_source); - gtk_widget_show (menu); + gtk_widget_show (combo_box); @@ -259,8 +395,27 @@ } GtkWidget * ---- evolution-2.10.0/addressbook/gui/contact-list-editor/contact-list-editor.glade.e-source-combo-box 2007-01-03 10:32:47.000000000 -0500 -+++ evolution-2.10.0/addressbook/gui/contact-list-editor/contact-list-editor.glade 2007-03-13 16:56:41.000000000 -0400 +@@ -491,7 +573,7 @@ bbdb_page_factory (EPlugin *ep, EConfigH + + /* Source selection option menu */ + option = create_addressbook_option_menu (stuff, AUTOMATIC_CONTACTS_ADDRESSBOOK); +- g_signal_connect (option, "source_selected", G_CALLBACK (source_changed_cb), stuff); ++ g_signal_connect (option, "changed", G_CALLBACK (source_changed_cb), stuff); + gtk_widget_set_sensitive (option, gconf_client_get_bool (target->gconf, GCONF_KEY_ENABLE, NULL)); + gtk_box_pack_start (GTK_BOX (inner_vbox), option, FALSE, FALSE, 0); + stuff->option_menu = option; +@@ -527,7 +609,7 @@ bbdb_page_factory (EPlugin *ep, EConfigH + + /* Gaim Source Selection Option Menu */ + gaim_option = create_addressbook_option_menu (stuff, GAIM_ADDRESSBOOK); +- g_signal_connect (gaim_option, "source_selected", G_CALLBACK (gaim_source_changed_cb), stuff); ++ g_signal_connect (gaim_option, "changed", G_CALLBACK (gaim_source_changed_cb), stuff); + gtk_widget_set_sensitive (gaim_option, gconf_client_get_bool (target->gconf, GCONF_KEY_ENABLE_GAIM, NULL)); + gtk_box_pack_start (GTK_BOX (inner_vbox), gaim_option, FALSE, FALSE, 0); + stuff->gaim_option_menu = gaim_option; +diff -up evolution-2.10.3/addressbook/gui/contact-list-editor/contact-list-editor.glade.e-source-combo-box evolution-2.10.3/addressbook/gui/contact-list-editor/contact-list-editor.glade +--- evolution-2.10.3/addressbook/gui/contact-list-editor/contact-list-editor.glade.e-source-combo-box 2007-05-27 14:11:02.000000000 -0400 ++++ evolution-2.10.3/addressbook/gui/contact-list-editor/contact-list-editor.glade 2007-08-29 23:56:32.000000000 -0400 @@ -158,9 +158,9 @@ @@ -273,8 +428,9 @@ 0 0 Tue, 01 Jun 2004 18:22:38 GMT ---- evolution-2.10.0/addressbook/gui/contact-list-editor/e-contact-list-editor.c.e-source-combo-box 2007-01-03 10:32:47.000000000 -0500 -+++ evolution-2.10.0/addressbook/gui/contact-list-editor/e-contact-list-editor.c 2007-03-13 16:56:41.000000000 -0400 +diff -up evolution-2.10.3/addressbook/gui/contact-list-editor/e-contact-list-editor.c.e-source-combo-box evolution-2.10.3/addressbook/gui/contact-list-editor/e-contact-list-editor.c +--- evolution-2.10.3/addressbook/gui/contact-list-editor/e-contact-list-editor.c.e-source-combo-box 2007-04-09 09:07:42.000000000 -0400 ++++ evolution-2.10.3/addressbook/gui/contact-list-editor/e-contact-list-editor.c 2007-08-29 23:56:32.000000000 -0400 @@ -33,7 +33,7 @@ #include #include @@ -284,7 +440,7 @@ #include #include -@@ -78,7 +78,7 @@ +@@ -78,7 +78,7 @@ static void select_cb (GtkWidget *w, ECo static void list_name_changed_cb (GtkWidget *w, EContactListEditor *editor); static void list_image_changed_cb (GtkWidget *w, EContactListEditor *editor); static void visible_addrs_toggled_cb (GtkWidget *w, EContactListEditor *editor); @@ -293,7 +449,7 @@ static gboolean email_key_pressed (GtkWidget *w, GdkEventKey *event, EContactListEditor *editor); static void email_match_selected (GtkWidget *w, EDestination *destination, EContactListEditor *editor); -@@ -233,7 +233,7 @@ +@@ -233,7 +233,7 @@ e_contact_list_editor_init (EContactList editor->list_name_entry = glade_xml_get_widget (gui, "list-name-entry"); editor->list_image = glade_xml_get_widget (gui, "list-image"); editor->visible_addrs_checkbutton = glade_xml_get_widget (gui, "visible-addrs-checkbutton"); @@ -302,7 +458,7 @@ editor->ok_button = glade_xml_get_widget (gui, "ok-button"); editor->cancel_button = glade_xml_get_widget (gui, "cancel-button"); -@@ -276,7 +276,7 @@ +@@ -276,7 +276,7 @@ e_contact_list_editor_init (EContactList "changed", G_CALLBACK(list_image_changed_cb), editor); g_signal_connect (editor->source_menu, @@ -311,7 +467,7 @@ command_state_changed (editor); -@@ -306,8 +306,9 @@ +@@ -306,8 +306,9 @@ new_target_cb (EBook *new_book, EBookSta if (status != E_BOOK_ERROR_OK || new_book == NULL) { eab_load_error_dialog (NULL, e_book_get_source (new_book), status); @@ -323,7 +479,7 @@ if (new_book) g_object_unref (new_book); -@@ -332,8 +333,12 @@ +@@ -332,8 +333,12 @@ cancel_load (EContactListEditor *editor) } static void @@ -337,7 +493,7 @@ cancel_load (editor); if (e_source_equal (e_book_get_source (editor->book), source)) -@@ -795,28 +800,28 @@ +@@ -795,28 +800,28 @@ select_cb (GtkWidget *w, EContactListEdi } GtkWidget * @@ -376,7 +532,7 @@ } GtkWidget * -@@ -1262,10 +1267,9 @@ +@@ -1262,10 +1267,9 @@ fill_in_info(EContactListEditor *editor) } if (editor->book) { @@ -390,8 +546,9 @@ gtk_widget_set_sensitive (editor->source_menu, editor->is_new_list); gtk_widget_set_sensitive (glade_xml_get_widget (editor->gui, "source-label"), editor->is_new_list); } ---- evolution-2.10.0/addressbook/gui/contact-editor/contact-editor.glade.e-source-combo-box 2007-02-26 04:59:17.000000000 -0500 -+++ evolution-2.10.0/addressbook/gui/contact-editor/contact-editor.glade 2007-03-13 16:56:41.000000000 -0400 +diff -up evolution-2.10.3/addressbook/gui/contact-editor/contact-editor.glade.e-source-combo-box evolution-2.10.3/addressbook/gui/contact-editor/contact-editor.glade +--- evolution-2.10.3/addressbook/gui/contact-editor/contact-editor.glade.e-source-combo-box 2007-04-09 09:07:40.000000000 -0400 ++++ evolution-2.10.3/addressbook/gui/contact-editor/contact-editor.glade 2007-08-29 23:56:32.000000000 -0400 @@ -356,9 +356,9 @@ @@ -404,8 +561,9 @@ 0 0 Tue, 13 Apr 2004 20:47:50 GMT ---- evolution-2.10.0/addressbook/gui/contact-editor/e-contact-editor.c.e-source-combo-box 2007-02-26 04:59:17.000000000 -0500 -+++ evolution-2.10.0/addressbook/gui/contact-editor/e-contact-editor.c 2007-03-13 16:56:41.000000000 -0400 +diff -up evolution-2.10.3/addressbook/gui/contact-editor/e-contact-editor.c.e-source-combo-box evolution-2.10.3/addressbook/gui/contact-editor/e-contact-editor.c +--- evolution-2.10.3/addressbook/gui/contact-editor/e-contact-editor.c.e-source-combo-box 2007-05-27 12:54:09.000000000 -0400 ++++ evolution-2.10.3/addressbook/gui/contact-editor/e-contact-editor.c 2007-08-30 00:01:23.000000000 -0400 @@ -46,7 +46,7 @@ #include @@ -415,7 +573,7 @@ #include -@@ -590,15 +590,16 @@ +@@ -590,15 +590,16 @@ static void fill_in_source_field (EContactEditor *editor) { GtkWidget *source_menu; @@ -436,7 +594,7 @@ } static void -@@ -2525,13 +2526,15 @@ +@@ -2525,13 +2526,15 @@ new_target_cb (EBook *new_book, EBookSta editor->load_book = NULL; if (status != E_BOOK_ERROR_OK || new_book == NULL) { @@ -456,7 +614,7 @@ if (new_book) g_object_unref (new_book); -@@ -2555,8 +2558,12 @@ +@@ -2555,8 +2558,12 @@ cancel_load (EContactEditor *editor) } static void @@ -470,7 +628,7 @@ cancel_load (editor); if (e_source_equal (e_book_get_source (editor->target_book), source)) -@@ -3330,8 +3337,8 @@ +@@ -3329,8 +3336,8 @@ e_contact_editor_init (EContactEditor *e g_signal_connect (widget, "clicked", G_CALLBACK (full_name_clicked), e_contact_editor); widget = glade_xml_get_widget(e_contact_editor->gui, "button-categories"); g_signal_connect (widget, "clicked", G_CALLBACK (categories_clicked), e_contact_editor); @@ -481,7 +639,7 @@ label = glade_xml_get_widget (e_contact_editor->gui, "where-label"); gtk_label_set_mnemonic_widget (GTK_LABEL (label), widget); widget = glade_xml_get_widget (e_contact_editor->gui, "button-ok"); -@@ -3782,25 +3789,25 @@ +@@ -3781,25 +3788,25 @@ e_contact_editor_create_web(gchar *name, } GtkWidget * @@ -489,16 +647,16 @@ - gchar *string1, gchar *string2, - gint int1, gint int2); +e_contact_editor_create_source_combo_box (gchar *name, -+ gchar *string1, gchar *string2, -+ gint int1, gint int2); ++ gchar *string1, gchar *string2, ++ gint int1, gint int2); GtkWidget * -e_contact_editor_create_source_option_menu (gchar *name, - gchar *string1, gchar *string2, - gint int1, gint int2) +e_contact_editor_create_source_combo_box (gchar *name, -+ gchar *string1, gchar *string2, -+ gint int1, gint int2) ++ gchar *string1, gchar *string2, ++ gint int1, gint int2) { - GtkWidget *menu; + GtkWidget *combo_box; @@ -517,8 +675,9 @@ + gtk_widget_show (combo_box); + return combo_box; } ---- evolution-2.10.0/addressbook/gui/contact-editor/e-contact-quick-add.c.e-source-combo-box 2007-01-03 10:32:45.000000000 -0500 -+++ evolution-2.10.0/addressbook/gui/contact-editor/e-contact-quick-add.c 2007-03-13 16:56:41.000000000 -0400 +diff -up evolution-2.10.3/addressbook/gui/contact-editor/e-contact-quick-add.c.e-source-combo-box evolution-2.10.3/addressbook/gui/contact-editor/e-contact-quick-add.c +--- evolution-2.10.3/addressbook/gui/contact-editor/e-contact-quick-add.c.e-source-combo-box 2007-04-09 09:07:40.000000000 -0400 ++++ evolution-2.10.3/addressbook/gui/contact-editor/e-contact-quick-add.c 2007-08-29 23:59:27.000000000 -0400 @@ -37,7 +37,7 @@ #include #include @@ -528,7 +687,7 @@ #include #include #include "e-contact-editor.h" -@@ -267,8 +267,12 @@ +@@ -267,8 +267,12 @@ clicked_cb (GtkWidget *w, gint button, g } static void @@ -542,7 +701,7 @@ if (qa->book) { g_object_unref (qa->book); qa->book = NULL; -@@ -317,16 +321,20 @@ +@@ -317,16 +321,20 @@ build_quick_add_dialog (QuickAdd *qa) gconf_client = gconf_client_get_default (); source_list = e_source_list_new_for_gconf (gconf_client, "/apps/evolution/addressbook/sources"); @@ -567,8 +726,9 @@ g_object_unref (source_list); ---- evolution-2.10.0/calendar/gui/dialogs/memo-page.glade.e-source-combo-box 2007-01-03 10:34:49.000000000 -0500 -+++ evolution-2.10.0/calendar/gui/dialogs/memo-page.glade 2007-03-13 16:56:41.000000000 -0400 +diff -up evolution-2.10.3/calendar/gui/dialogs/memo-page.glade.e-source-combo-box evolution-2.10.3/calendar/gui/dialogs/memo-page.glade +--- evolution-2.10.3/calendar/gui/dialogs/memo-page.glade.e-source-combo-box 2007-04-09 09:10:28.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/dialogs/memo-page.glade 2007-08-29 23:56:32.000000000 -0400 @@ -141,7 +141,7 @@ @@ -578,9 +738,10 @@ 0 0 Tue, 13 Jan 2004 22:00:00 GMT ---- evolution-2.10.0/calendar/gui/dialogs/event-page.glade.e-source-combo-box 2007-01-03 10:34:49.000000000 -0500 -+++ evolution-2.10.0/calendar/gui/dialogs/event-page.glade 2007-03-13 16:56:41.000000000 -0400 -@@ -774,7 +774,7 @@ +diff -up evolution-2.10.3/calendar/gui/dialogs/event-page.glade.e-source-combo-box evolution-2.10.3/calendar/gui/dialogs/event-page.glade +--- evolution-2.10.3/calendar/gui/dialogs/event-page.glade.e-source-combo-box 2007-05-27 13:58:15.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/dialogs/event-page.glade 2007-08-29 23:56:32.000000000 -0400 +@@ -775,7 +775,7 @@ True @@ -589,8 +750,9 @@ 0 0 Wed, 17 Dec 2003 18:20:26 GMT ---- evolution-2.10.0/calendar/gui/dialogs/task-page.glade.e-source-combo-box 2007-01-03 10:34:49.000000000 -0500 -+++ evolution-2.10.0/calendar/gui/dialogs/task-page.glade 2007-03-13 16:56:41.000000000 -0400 +diff -up evolution-2.10.3/calendar/gui/dialogs/task-page.glade.e-source-combo-box evolution-2.10.3/calendar/gui/dialogs/task-page.glade +--- evolution-2.10.3/calendar/gui/dialogs/task-page.glade.e-source-combo-box 2007-04-09 09:10:28.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/dialogs/task-page.glade 2007-08-29 23:56:32.000000000 -0400 @@ -618,7 +618,7 @@ 24 @@ -600,8 +762,9 @@ 0 0 Thu, 18 Dec 2003 01:58:48 GMT ---- evolution-2.10.0/calendar/gui/dialogs/memo-page.c.e-source-combo-box 2007-01-03 10:34:49.000000000 -0500 -+++ evolution-2.10.0/calendar/gui/dialogs/memo-page.c 2007-03-13 16:56:41.000000000 -0400 +diff -up evolution-2.10.3/calendar/gui/dialogs/memo-page.c.e-source-combo-box evolution-2.10.3/calendar/gui/dialogs/memo-page.c +--- evolution-2.10.3/calendar/gui/dialogs/memo-page.c.e-source-combo-box 2007-04-09 09:10:28.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/dialogs/memo-page.c 2007-08-30 00:04:19.000000000 -0400 @@ -35,7 +35,7 @@ #include #include @@ -611,7 +774,7 @@ #include #include #include -@@ -339,7 +339,6 @@ +@@ -339,7 +339,6 @@ memo_page_fill_widgets (CompEditorPage * ECalComponentDateTime d; GSList *l; const char *categories; @@ -619,7 +782,7 @@ mpage = MEMO_PAGE (page); priv = mpage->priv; -@@ -432,8 +431,9 @@ +@@ -432,8 +431,9 @@ memo_page_fill_widgets (CompEditorPage * } /* Source */ @@ -631,7 +794,7 @@ priv->updating = FALSE; -@@ -844,13 +844,12 @@ +@@ -844,13 +844,12 @@ field_changed_cb (GtkWidget *widget, gpo } static void @@ -649,7 +812,7 @@ if (!priv->updating) { ECal *client; -@@ -862,8 +861,9 @@ +@@ -862,8 +861,9 @@ source_changed_cb (GtkWidget *widget, ES if (client) g_object_unref (client); @@ -661,7 +824,7 @@ dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK, -@@ -973,7 +973,7 @@ +@@ -973,7 +973,7 @@ init_widgets (MemoPage *mpage) G_CALLBACK (categories_clicked_cb), mpage); /* Source selector */ @@ -670,7 +833,7 @@ G_CALLBACK (source_changed_cb), mpage); /* Connect the default signal handler to use to make sure the "changed" -@@ -1167,21 +1167,22 @@ +@@ -1167,21 +1167,22 @@ memo_page_create_date_edit (void) return dedit; } @@ -700,8 +863,9 @@ + gtk_widget_show (combo_box); + return combo_box; } ---- evolution-2.10.0/calendar/gui/dialogs/event-page.c.e-source-combo-box 2007-03-12 23:45:00.000000000 -0400 -+++ evolution-2.10.0/calendar/gui/dialogs/event-page.c 2007-03-13 16:56:41.000000000 -0400 +diff -up evolution-2.10.3/calendar/gui/dialogs/event-page.c.e-source-combo-box evolution-2.10.3/calendar/gui/dialogs/event-page.c +--- evolution-2.10.3/calendar/gui/dialogs/event-page.c.e-source-combo-box 2007-08-29 23:56:32.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/dialogs/event-page.c 2007-08-30 00:06:35.000000000 -0400 @@ -33,7 +33,7 @@ #include #include @@ -711,7 +875,7 @@ #include "common/authentication.h" #include "e-util/e-categories-config.h" #include "e-util/e-dialog-widgets.h" -@@ -967,7 +967,6 @@ +@@ -967,7 +967,6 @@ event_page_fill_widgets (CompEditorPage ECalComponentDateTime start_date, end_date; const char *location, *uid = NULL; const char *categories; @@ -719,7 +883,7 @@ GSList *l; gboolean validated = TRUE; -@@ -1163,8 +1162,9 @@ +@@ -1163,8 +1162,9 @@ event_page_fill_widgets (CompEditorPage e_dialog_editable_set (priv->categories, categories); /* Source */ @@ -731,7 +895,7 @@ e_cal_component_get_uid (comp, &uid); if (!(COMP_EDITOR_PAGE (epage)->flags & COMP_EDITOR_PAGE_DELEGATE) -@@ -2566,7 +2566,8 @@ +@@ -2566,7 +2566,8 @@ event_page_sendoptions_clicked_cb (Event if (!priv->sod) { priv->sod = e_sendoptions_dialog_new (); @@ -741,7 +905,7 @@ e_sendoptions_utils_set_default_data (priv->sod, source, "calendar"); priv->sod->data->initialized = TRUE; } -@@ -2595,13 +2596,12 @@ +@@ -2595,13 +2596,12 @@ field_changed_cb (GtkWidget *widget, gpo } static void @@ -759,7 +923,7 @@ if (!priv->updating) { ECal *client; -@@ -2620,8 +2620,9 @@ +@@ -2620,8 +2620,9 @@ source_changed_cb (GtkWidget *widget, ES if (client) g_object_unref (client); @@ -771,7 +935,7 @@ dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK, -@@ -2847,7 +2848,7 @@ +@@ -2847,7 +2848,7 @@ init_widgets (EventPage *epage) G_CALLBACK (categories_clicked_cb), epage); /* Source selector */ @@ -780,7 +944,7 @@ G_CALLBACK (source_changed_cb), epage); /* Alarms */ priv->alarm_list_store = e_alarm_list_new (); -@@ -3148,23 +3149,24 @@ +@@ -3148,23 +3149,24 @@ make_timezone_entry (void) return w; } @@ -812,8 +976,9 @@ } GtkWidget *make_status_icons (void); ---- evolution-2.10.0/calendar/gui/dialogs/task-page.c.e-source-combo-box 2007-01-03 10:34:49.000000000 -0500 -+++ evolution-2.10.0/calendar/gui/dialogs/task-page.c 2007-03-13 16:56:41.000000000 -0400 +diff -up evolution-2.10.3/calendar/gui/dialogs/task-page.c.e-source-combo-box evolution-2.10.3/calendar/gui/dialogs/task-page.c +--- evolution-2.10.3/calendar/gui/dialogs/task-page.c.e-source-combo-box 2007-04-09 09:10:28.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/dialogs/task-page.c 2007-08-30 00:03:08.000000000 -0400 @@ -35,7 +35,7 @@ #include #include @@ -823,7 +988,7 @@ #include #include #include "common/authentication.h" -@@ -513,7 +513,6 @@ +@@ -513,7 +513,6 @@ task_page_fill_widgets (CompEditorPage * icalcomponent *icalcomp; const char *categories, *uid; icaltimezone *zone, *default_zone; @@ -831,7 +996,7 @@ tpage = TASK_PAGE (page); priv = tpage->priv; -@@ -657,8 +656,9 @@ +@@ -657,8 +656,9 @@ task_page_fill_widgets (CompEditorPage * e_dialog_editable_set (priv->categories, categories); /* Source */ @@ -843,7 +1008,7 @@ if (priv->is_assignment) { ECalComponentOrganizer organizer; -@@ -1617,13 +1617,12 @@ +@@ -1617,13 +1617,12 @@ field_changed_cb (GtkWidget *widget, gpo } static void @@ -861,7 +1026,7 @@ if (!priv->updating) { ECal *client; -@@ -1642,8 +1641,9 @@ +@@ -1642,8 +1641,9 @@ source_changed_cb (GtkWidget *widget, ES if (client) g_object_unref (client); @@ -873,7 +1038,7 @@ dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK, -@@ -1655,7 +1655,7 @@ +@@ -1655,7 +1655,7 @@ source_changed_cb (GtkWidget *widget, ES comp_editor_notify_client_changed ( COMP_EDITOR (gtk_widget_get_toplevel (priv->main)), client); @@ -882,7 +1047,7 @@ if (e_cal_get_static_capability (client, CAL_STATIC_CAPABILITY_REQ_SEND_OPTIONS) && priv->is_assignment) task_page_show_options (tpage); else -@@ -1679,7 +1679,8 @@ +@@ -1679,7 +1679,8 @@ task_page_sendoptions_clicked_cb (TaskPa if (!priv->sod) { priv->sod = e_sendoptions_dialog_new (); priv->sod->data->initialized = TRUE; @@ -892,7 +1057,7 @@ e_sendoptions_utils_set_default_data (priv->sod, source, "task"); } -@@ -1734,7 +1735,7 @@ +@@ -1734,7 +1735,7 @@ init_widgets (TaskPage *tpage) G_CALLBACK (categories_clicked_cb), tpage); /* Source selector */ @@ -901,7 +1066,7 @@ G_CALLBACK (source_changed_cb), tpage); /* Connect the default signal handler to use to make sure the "changed" -@@ -1955,21 +1956,22 @@ +@@ -1955,21 +1956,23 @@ task_page_create_date_edit (void) return dedit; } @@ -925,14 +1090,16 @@ - menu = e_source_option_menu_new (source_list); + combo_box = e_source_combo_box_new (source_list); g_object_unref (source_list); ++ g_object_unref (gconf_client); - gtk_widget_show (menu); - return menu; + gtk_widget_show (combo_box); + return combo_box; } ---- evolution-2.10.0/calendar/gui/e-itip-control.c.e-source-combo-box 2007-01-03 10:34:53.000000000 -0500 -+++ evolution-2.10.0/calendar/gui/e-itip-control.c 2007-03-13 16:56:41.000000000 -0400 +diff -up evolution-2.10.3/calendar/gui/e-itip-control.c.e-source-combo-box evolution-2.10.3/calendar/gui/e-itip-control.c +--- evolution-2.10.3/calendar/gui/e-itip-control.c.e-source-combo-box 2007-04-09 09:10:33.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/e-itip-control.c 2007-08-29 23:56:32.000000000 -0400 @@ -44,7 +44,7 @@ #include #include @@ -942,7 +1109,7 @@ #include #include #include -@@ -226,13 +226,13 @@ +@@ -226,13 +226,13 @@ typedef struct { } EItipControlFindData; static void @@ -961,7 +1128,7 @@ if (priv->ok) gtk_widget_set_sensitive (priv->ok, FALSE); -@@ -273,7 +273,7 @@ +@@ -273,7 +273,7 @@ find_cal_opened_cb (ECal *ecal, ECalenda cleanup: if (fd->count == 0) { if (fd->show_selector && !priv->current_ecal && priv->vbox) { @@ -970,7 +1137,7 @@ char *uid; switch (priv->type) { -@@ -297,17 +297,17 @@ +@@ -297,17 +297,17 @@ find_cal_opened_cb (ECal *ecal, ECalenda if (!source) source = e_source_list_peek_source_any (priv->source_lists[priv->type]); diff --git a/evolution.spec b/evolution.spec index 128c5f3..af71454 100644 --- a/evolution.spec +++ b/evolution.spec @@ -47,7 +47,7 @@ Name: evolution Version: 2.10.3 -Release: 4%{?dist} +Release: 5%{?dist} License: GPL Group: Applications/Productivity Summary: GNOME's next-generation groupware suite @@ -751,6 +751,10 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/evolution/%{evo_major}/libmenus.so %changelog +* Thu Aug 30 2007 Matthew Barnes - 2.10.3-5.fc7 +- Revise patch for GNOME bug #417999 to fix GNOME bug #447591 + (Automatic Contacts combo boxes don't work). + * Wed Aug 29 2007 Matthew Barnes - 2.10.3-4.fc7 - Revise patch for GNOME bug #362638 to fix GNOME bug #357175 (Evolution fails to close after IMAP alert has been displayed). From 0e77303d91cc8f53a548d616a2dfa1a745c8f63a Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Thu, 30 Aug 2007 14:06:14 +0000 Subject: [PATCH 12/19] - Revise patch for GNOME bug #417999 to fix GNOME bug #447591 (Automatic Contacts combo boxes don't work). --- evolution-2.10.0-e-source-combo-box.patch | 55 ++++++++++------------- 1 file changed, 23 insertions(+), 32 deletions(-) diff --git a/evolution-2.10.0-e-source-combo-box.patch b/evolution-2.10.0-e-source-combo-box.patch index 6812912..fee1e80 100644 --- a/evolution-2.10.0-e-source-combo-box.patch +++ b/evolution-2.10.0-e-source-combo-box.patch @@ -1,6 +1,6 @@ diff -up evolution-2.10.3/widgets/misc/e-pilot-settings.c.e-source-combo-box evolution-2.10.3/widgets/misc/e-pilot-settings.c --- evolution-2.10.3/widgets/misc/e-pilot-settings.c.e-source-combo-box 2007-04-09 09:10:24.000000000 -0400 -+++ evolution-2.10.3/widgets/misc/e-pilot-settings.c 2007-08-29 23:57:36.000000000 -0400 ++++ evolution-2.10.3/widgets/misc/e-pilot-settings.c 2007-08-30 09:59:24.000000000 -0400 @@ -27,7 +27,7 @@ #include @@ -43,7 +43,7 @@ diff -up evolution-2.10.3/widgets/misc/e-pilot-settings.c.e-source-combo-box evo gboolean diff -up evolution-2.10.3/plugins/itip-formatter/itip-formatter.c.e-source-combo-box evolution-2.10.3/plugins/itip-formatter/itip-formatter.c --- evolution-2.10.3/plugins/itip-formatter/itip-formatter.c.e-source-combo-box 2007-04-09 09:09:15.000000000 -0400 -+++ evolution-2.10.3/plugins/itip-formatter/itip-formatter.c 2007-08-29 23:56:32.000000000 -0400 ++++ evolution-2.10.3/plugins/itip-formatter/itip-formatter.c 2007-08-30 09:59:24.000000000 -0400 @@ -39,7 +39,7 @@ #include #include @@ -55,7 +55,7 @@ diff -up evolution-2.10.3/plugins/itip-formatter/itip-formatter.c.e-source-combo #include diff -up evolution-2.10.3/plugins/itip-formatter/itip-view.c.e-source-combo-box evolution-2.10.3/plugins/itip-formatter/itip-view.c --- evolution-2.10.3/plugins/itip-formatter/itip-view.c.e-source-combo-box 2007-04-09 09:09:15.000000000 -0400 -+++ evolution-2.10.3/plugins/itip-formatter/itip-view.c 2007-08-29 23:56:32.000000000 -0400 ++++ evolution-2.10.3/plugins/itip-formatter/itip-view.c 2007-08-30 09:59:24.000000000 -0400 @@ -35,7 +35,7 @@ #include #include @@ -182,7 +182,7 @@ diff -up evolution-2.10.3/plugins/itip-formatter/itip-view.c.e-source-combo-box void diff -up evolution-2.10.3/plugins/bbdb/gaimbuddies.c.e-source-combo-box evolution-2.10.3/plugins/bbdb/gaimbuddies.c --- evolution-2.10.3/plugins/bbdb/gaimbuddies.c.e-source-combo-box 2007-05-25 02:43:33.000000000 -0400 -+++ evolution-2.10.3/plugins/bbdb/gaimbuddies.c 2007-08-29 23:56:32.000000000 -0400 ++++ evolution-2.10.3/plugins/bbdb/gaimbuddies.c 2007-08-30 09:59:24.000000000 -0400 @@ -44,7 +44,7 @@ #include @@ -194,7 +194,7 @@ diff -up evolution-2.10.3/plugins/bbdb/gaimbuddies.c.e-source-combo-box evolutio #include diff -up evolution-2.10.3/plugins/bbdb/bbdb.c.e-source-combo-box evolution-2.10.3/plugins/bbdb/bbdb.c --- evolution-2.10.3/plugins/bbdb/bbdb.c.e-source-combo-box 2007-06-30 15:29:42.000000000 -0400 -+++ evolution-2.10.3/plugins/bbdb/bbdb.c 2007-08-29 23:56:32.000000000 -0400 ++++ evolution-2.10.3/plugins/bbdb/bbdb.c 2007-08-30 10:03:58.000000000 -0400 @@ -40,7 +40,7 @@ #include @@ -255,16 +255,7 @@ diff -up evolution-2.10.3/plugins/bbdb/bbdb.c.e-source-combo-box evolution-2.10. int e_plugin_lib_enable (EPluginLib *ep, int enable) { -@@ -265,8 +304,6 @@ bbdb_open_addressbook (int type) - char *uri; - EBook *book = NULL; - -- gboolean enable; -- - gboolean status; - GError *error = NULL; - -@@ -353,8 +390,23 @@ enable_toggled_cb (GtkWidget *widget, gp +@@ -353,8 +392,23 @@ enable_toggled_cb (GtkWidget *widget, gp gtk_widget_set_sensitive (stuff->option_menu, active); if (active && !gconf_client_get_string (stuff->target->gconf, GCONF_KEY_WHICH_ADDRESSBOOK, NULL)) { @@ -290,7 +281,7 @@ diff -up evolution-2.10.3/plugins/bbdb/bbdb.c.e-source-combo-box evolution-2.10. } } -@@ -372,7 +424,8 @@ enable_gaim_toggled_cb (GtkWidget *widge +@@ -372,7 +426,8 @@ enable_gaim_toggled_cb (GtkWidget *widge gtk_widget_set_sensitive (stuff->gaim_option_menu, active); if (active && !gconf_client_get_string (stuff->target->gconf, GCONF_KEY_WHICH_ADDRESSBOOK_GAIM, NULL)) { @@ -300,7 +291,7 @@ diff -up evolution-2.10.3/plugins/bbdb/bbdb.c.e-source-combo-box evolution-2.10. gconf_client_set_string (stuff->target->gconf, GCONF_KEY_WHICH_ADDRESSBOOK_GAIM, e_source_get_uri (selected_source), NULL); } } -@@ -384,48 +437,77 @@ synchronize_button_clicked_cb (GtkWidget +@@ -384,48 +439,77 @@ synchronize_button_clicked_cb (GtkWidget } static void @@ -395,7 +386,7 @@ diff -up evolution-2.10.3/plugins/bbdb/bbdb.c.e-source-combo-box evolution-2.10. } GtkWidget * -@@ -491,7 +573,7 @@ bbdb_page_factory (EPlugin *ep, EConfigH +@@ -491,7 +575,7 @@ bbdb_page_factory (EPlugin *ep, EConfigH /* Source selection option menu */ option = create_addressbook_option_menu (stuff, AUTOMATIC_CONTACTS_ADDRESSBOOK); @@ -404,7 +395,7 @@ diff -up evolution-2.10.3/plugins/bbdb/bbdb.c.e-source-combo-box evolution-2.10. gtk_widget_set_sensitive (option, gconf_client_get_bool (target->gconf, GCONF_KEY_ENABLE, NULL)); gtk_box_pack_start (GTK_BOX (inner_vbox), option, FALSE, FALSE, 0); stuff->option_menu = option; -@@ -527,7 +609,7 @@ bbdb_page_factory (EPlugin *ep, EConfigH +@@ -527,7 +611,7 @@ bbdb_page_factory (EPlugin *ep, EConfigH /* Gaim Source Selection Option Menu */ gaim_option = create_addressbook_option_menu (stuff, GAIM_ADDRESSBOOK); @@ -415,7 +406,7 @@ diff -up evolution-2.10.3/plugins/bbdb/bbdb.c.e-source-combo-box evolution-2.10. stuff->gaim_option_menu = gaim_option; diff -up evolution-2.10.3/addressbook/gui/contact-list-editor/contact-list-editor.glade.e-source-combo-box evolution-2.10.3/addressbook/gui/contact-list-editor/contact-list-editor.glade --- evolution-2.10.3/addressbook/gui/contact-list-editor/contact-list-editor.glade.e-source-combo-box 2007-05-27 14:11:02.000000000 -0400 -+++ evolution-2.10.3/addressbook/gui/contact-list-editor/contact-list-editor.glade 2007-08-29 23:56:32.000000000 -0400 ++++ evolution-2.10.3/addressbook/gui/contact-list-editor/contact-list-editor.glade 2007-08-30 09:59:24.000000000 -0400 @@ -158,9 +158,9 @@ @@ -430,7 +421,7 @@ diff -up evolution-2.10.3/addressbook/gui/contact-list-editor/contact-list-edito Tue, 01 Jun 2004 18:22:38 GMT diff -up evolution-2.10.3/addressbook/gui/contact-list-editor/e-contact-list-editor.c.e-source-combo-box evolution-2.10.3/addressbook/gui/contact-list-editor/e-contact-list-editor.c --- evolution-2.10.3/addressbook/gui/contact-list-editor/e-contact-list-editor.c.e-source-combo-box 2007-04-09 09:07:42.000000000 -0400 -+++ evolution-2.10.3/addressbook/gui/contact-list-editor/e-contact-list-editor.c 2007-08-29 23:56:32.000000000 -0400 ++++ evolution-2.10.3/addressbook/gui/contact-list-editor/e-contact-list-editor.c 2007-08-30 09:59:24.000000000 -0400 @@ -33,7 +33,7 @@ #include #include @@ -548,7 +539,7 @@ diff -up evolution-2.10.3/addressbook/gui/contact-list-editor/e-contact-list-edi } diff -up evolution-2.10.3/addressbook/gui/contact-editor/contact-editor.glade.e-source-combo-box evolution-2.10.3/addressbook/gui/contact-editor/contact-editor.glade --- evolution-2.10.3/addressbook/gui/contact-editor/contact-editor.glade.e-source-combo-box 2007-04-09 09:07:40.000000000 -0400 -+++ evolution-2.10.3/addressbook/gui/contact-editor/contact-editor.glade 2007-08-29 23:56:32.000000000 -0400 ++++ evolution-2.10.3/addressbook/gui/contact-editor/contact-editor.glade 2007-08-30 09:59:24.000000000 -0400 @@ -356,9 +356,9 @@ @@ -563,7 +554,7 @@ diff -up evolution-2.10.3/addressbook/gui/contact-editor/contact-editor.glade.e- Tue, 13 Apr 2004 20:47:50 GMT diff -up evolution-2.10.3/addressbook/gui/contact-editor/e-contact-editor.c.e-source-combo-box evolution-2.10.3/addressbook/gui/contact-editor/e-contact-editor.c --- evolution-2.10.3/addressbook/gui/contact-editor/e-contact-editor.c.e-source-combo-box 2007-05-27 12:54:09.000000000 -0400 -+++ evolution-2.10.3/addressbook/gui/contact-editor/e-contact-editor.c 2007-08-30 00:01:23.000000000 -0400 ++++ evolution-2.10.3/addressbook/gui/contact-editor/e-contact-editor.c 2007-08-30 09:59:24.000000000 -0400 @@ -46,7 +46,7 @@ #include @@ -677,7 +668,7 @@ diff -up evolution-2.10.3/addressbook/gui/contact-editor/e-contact-editor.c.e-so } diff -up evolution-2.10.3/addressbook/gui/contact-editor/e-contact-quick-add.c.e-source-combo-box evolution-2.10.3/addressbook/gui/contact-editor/e-contact-quick-add.c --- evolution-2.10.3/addressbook/gui/contact-editor/e-contact-quick-add.c.e-source-combo-box 2007-04-09 09:07:40.000000000 -0400 -+++ evolution-2.10.3/addressbook/gui/contact-editor/e-contact-quick-add.c 2007-08-29 23:59:27.000000000 -0400 ++++ evolution-2.10.3/addressbook/gui/contact-editor/e-contact-quick-add.c 2007-08-30 09:59:24.000000000 -0400 @@ -37,7 +37,7 @@ #include #include @@ -728,7 +719,7 @@ diff -up evolution-2.10.3/addressbook/gui/contact-editor/e-contact-quick-add.c.e diff -up evolution-2.10.3/calendar/gui/dialogs/memo-page.glade.e-source-combo-box evolution-2.10.3/calendar/gui/dialogs/memo-page.glade --- evolution-2.10.3/calendar/gui/dialogs/memo-page.glade.e-source-combo-box 2007-04-09 09:10:28.000000000 -0400 -+++ evolution-2.10.3/calendar/gui/dialogs/memo-page.glade 2007-08-29 23:56:32.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/dialogs/memo-page.glade 2007-08-30 09:59:24.000000000 -0400 @@ -141,7 +141,7 @@ @@ -740,7 +731,7 @@ diff -up evolution-2.10.3/calendar/gui/dialogs/memo-page.glade.e-source-combo-bo Tue, 13 Jan 2004 22:00:00 GMT diff -up evolution-2.10.3/calendar/gui/dialogs/event-page.glade.e-source-combo-box evolution-2.10.3/calendar/gui/dialogs/event-page.glade --- evolution-2.10.3/calendar/gui/dialogs/event-page.glade.e-source-combo-box 2007-05-27 13:58:15.000000000 -0400 -+++ evolution-2.10.3/calendar/gui/dialogs/event-page.glade 2007-08-29 23:56:32.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/dialogs/event-page.glade 2007-08-30 09:59:24.000000000 -0400 @@ -775,7 +775,7 @@ @@ -752,7 +743,7 @@ diff -up evolution-2.10.3/calendar/gui/dialogs/event-page.glade.e-source-combo-b Wed, 17 Dec 2003 18:20:26 GMT diff -up evolution-2.10.3/calendar/gui/dialogs/task-page.glade.e-source-combo-box evolution-2.10.3/calendar/gui/dialogs/task-page.glade --- evolution-2.10.3/calendar/gui/dialogs/task-page.glade.e-source-combo-box 2007-04-09 09:10:28.000000000 -0400 -+++ evolution-2.10.3/calendar/gui/dialogs/task-page.glade 2007-08-29 23:56:32.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/dialogs/task-page.glade 2007-08-30 09:59:24.000000000 -0400 @@ -618,7 +618,7 @@ 24 @@ -764,7 +755,7 @@ diff -up evolution-2.10.3/calendar/gui/dialogs/task-page.glade.e-source-combo-bo Thu, 18 Dec 2003 01:58:48 GMT diff -up evolution-2.10.3/calendar/gui/dialogs/memo-page.c.e-source-combo-box evolution-2.10.3/calendar/gui/dialogs/memo-page.c --- evolution-2.10.3/calendar/gui/dialogs/memo-page.c.e-source-combo-box 2007-04-09 09:10:28.000000000 -0400 -+++ evolution-2.10.3/calendar/gui/dialogs/memo-page.c 2007-08-30 00:04:19.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/dialogs/memo-page.c 2007-08-30 09:59:24.000000000 -0400 @@ -35,7 +35,7 @@ #include #include @@ -864,8 +855,8 @@ diff -up evolution-2.10.3/calendar/gui/dialogs/memo-page.c.e-source-combo-box ev + return combo_box; } diff -up evolution-2.10.3/calendar/gui/dialogs/event-page.c.e-source-combo-box evolution-2.10.3/calendar/gui/dialogs/event-page.c ---- evolution-2.10.3/calendar/gui/dialogs/event-page.c.e-source-combo-box 2007-08-29 23:56:32.000000000 -0400 -+++ evolution-2.10.3/calendar/gui/dialogs/event-page.c 2007-08-30 00:06:35.000000000 -0400 +--- evolution-2.10.3/calendar/gui/dialogs/event-page.c.e-source-combo-box 2007-08-30 09:59:22.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/dialogs/event-page.c 2007-08-30 09:59:24.000000000 -0400 @@ -33,7 +33,7 @@ #include #include @@ -978,7 +969,7 @@ diff -up evolution-2.10.3/calendar/gui/dialogs/event-page.c.e-source-combo-box e GtkWidget *make_status_icons (void); diff -up evolution-2.10.3/calendar/gui/dialogs/task-page.c.e-source-combo-box evolution-2.10.3/calendar/gui/dialogs/task-page.c --- evolution-2.10.3/calendar/gui/dialogs/task-page.c.e-source-combo-box 2007-04-09 09:10:28.000000000 -0400 -+++ evolution-2.10.3/calendar/gui/dialogs/task-page.c 2007-08-30 00:03:08.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/dialogs/task-page.c 2007-08-30 09:59:24.000000000 -0400 @@ -35,7 +35,7 @@ #include #include @@ -1099,7 +1090,7 @@ diff -up evolution-2.10.3/calendar/gui/dialogs/task-page.c.e-source-combo-box ev } diff -up evolution-2.10.3/calendar/gui/e-itip-control.c.e-source-combo-box evolution-2.10.3/calendar/gui/e-itip-control.c --- evolution-2.10.3/calendar/gui/e-itip-control.c.e-source-combo-box 2007-04-09 09:10:33.000000000 -0400 -+++ evolution-2.10.3/calendar/gui/e-itip-control.c 2007-08-29 23:56:32.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/e-itip-control.c 2007-08-30 09:59:24.000000000 -0400 @@ -44,7 +44,7 @@ #include #include From 50807c7d2601384f598c848b2afa0e6dcfe5cca8 Mon Sep 17 00:00:00 2001 From: Daniel Williams Date: Thu, 1 Nov 2007 20:41:33 +0000 Subject: [PATCH 13/19] - Backport fix for GNOME bug #239441 --- ...n-2.10.3-fix-ETreeTableAdapter-crash.patch | 50 +++++++++++++++++++ evolution.spec | 9 +++- 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 evolution-2.10.3-fix-ETreeTableAdapter-crash.patch diff --git a/evolution-2.10.3-fix-ETreeTableAdapter-crash.patch b/evolution-2.10.3-fix-ETreeTableAdapter-crash.patch new file mode 100644 index 0000000..1591e0e --- /dev/null +++ b/evolution-2.10.3-fix-ETreeTableAdapter-crash.patch @@ -0,0 +1,50 @@ +--- trunk/widgets/table/e-tree-table-adapter.c 2007/08/07 09:35:42 33964 ++++ trunk/widgets/table/e-tree-table-adapter.c 2007/08/24 09:10:55 34090 +@@ -80,6 +80,8 @@ + int node_removed_id; + int node_request_collapse_id; + int sort_info_changed_id; ++ ++ guint resort_idle_id; + }; + + static void etta_sort_info_changed (ETableSortInfo *sort_info, ETreeTableAdapter *etta); +@@ -498,6 +500,11 @@ + { + ETreeTableAdapter *etta = E_TREE_TABLE_ADAPTER (object); + ++ if (etta->priv->resort_idle_id) { ++ g_source_remove (etta->priv->resort_idle_id); ++ etta->priv->resort_idle_id = 0; ++ } ++ + if (etta->priv->root) { + kill_gnode(etta->priv->root, etta); + etta->priv->root = NULL; +@@ -728,6 +735,8 @@ + etta->priv->node_inserted_id = 0; + etta->priv->node_removed_id = 0; + etta->priv->node_request_collapse_id = 0; ++ ++ etta->priv->resort_idle_id = 0; + } + + static void +@@ -746,6 +755,7 @@ + resort_model (ETreeTableAdapter *etta) + { + etta_sort_info_changed (NULL, etta); ++ etta->priv->resort_idle_id = 0; + return FALSE; + } + +@@ -758,7 +768,8 @@ + /* FIXME: Really it shouldnt be required. But a lot of thread + * which were supposed to be present in the list is way below + */ +- g_idle_add (resort_model, etta); ++ if (!etta->priv->resort_idle_id) ++ etta->priv->resort_idle_id = g_idle_add ((GSourceFunc) resort_model, etta); + } + + static void diff --git a/evolution.spec b/evolution.spec index af71454..572bdb5 100644 --- a/evolution.spec +++ b/evolution.spec @@ -47,7 +47,7 @@ Name: evolution Version: 2.10.3 -Release: 5%{?dist} +Release: 6%{?dist} License: GPL Group: Applications/Productivity Summary: GNOME's next-generation groupware suite @@ -173,6 +173,9 @@ Patch54: evolution-2.10.1-send-recv-dialog.patch # GNOME bug #380534 Patch55: evolution-2.10.3-version-checks.patch +# GNOME bug #239441 +Patch56: evolution-2.10.3-fix-ETreeTableAdapter-crash.patch + ## Dependencies ### Requires(post): GConf2 @@ -330,6 +333,7 @@ Development files needed for building things which link against evolution. %patch53 -p1 -b .check-uri-before-strcmp %patch54 -p1 -b .send-recv-dialog %patch55 -p1 -b .version-checks +%patch56 -p1 -b .ETreeTableAdapter-idle-crash mkdir -p krb5-fakeprefix/include mkdir -p krb5-fakeprefix/lib @@ -751,6 +755,9 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/evolution/%{evo_major}/libmenus.so %changelog +* Wed Oct 31 2007 Dan Williams - 2.10.3-6.fc7 +- Backport fix for GNOME bug #239441 + * Thu Aug 30 2007 Matthew Barnes - 2.10.3-5.fc7 - Revise patch for GNOME bug #417999 to fix GNOME bug #447591 (Automatic Contacts combo boxes don't work). From b049b0dc03d606b1712ff69cf5d7994555d23c91 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sat, 3 Nov 2007 19:26:30 +0000 Subject: [PATCH 14/19] - Add patch for RH bug #249640 (todo conduit crash). --- evolution-2.10.3-todo-conduit.patch | 12 ++++++++++++ evolution.spec | 9 ++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 evolution-2.10.3-todo-conduit.patch diff --git a/evolution-2.10.3-todo-conduit.patch b/evolution-2.10.3-todo-conduit.patch new file mode 100644 index 0000000..65a2c9b --- /dev/null +++ b/evolution-2.10.3-todo-conduit.patch @@ -0,0 +1,12 @@ +diff -up evolution-2.10.3/calendar/conduits/todo/todo-conduit.c.todo-conduit evolution-2.10.3/calendar/conduits/todo/todo-conduit.c +--- evolution-2.10.3/calendar/conduits/todo/todo-conduit.c.todo-conduit 2007-11-03 15:21:56.000000000 -0400 ++++ evolution-2.10.3/calendar/conduits/todo/todo-conduit.c 2007-11-03 15:22:10.000000000 -0400 +@@ -992,7 +992,7 @@ comp_from_remote_record (GnomePilotCondu + e_cal_component_set_status (comp, ICAL_STATUS_NEEDSACTION); + } + +- if (!is_empty_time (todo.due)) { ++ if (!todo.indefinite && !is_empty_time (todo.due)) { + due = tm_to_icaltimetype (&todo.due, TRUE); + dt.value = &due; + e_cal_component_set_due (comp, &dt); diff --git a/evolution.spec b/evolution.spec index 572bdb5..6c36ade 100644 --- a/evolution.spec +++ b/evolution.spec @@ -47,7 +47,7 @@ Name: evolution Version: 2.10.3 -Release: 6%{?dist} +Release: 7%{?dist} License: GPL Group: Applications/Productivity Summary: GNOME's next-generation groupware suite @@ -176,6 +176,9 @@ Patch55: evolution-2.10.3-version-checks.patch # GNOME bug #239441 Patch56: evolution-2.10.3-fix-ETreeTableAdapter-crash.patch +# RH bug #249640 / GNOME bug #442329 +Patch57: evolution-2.10.3-todo-conduit.patch + ## Dependencies ### Requires(post): GConf2 @@ -334,6 +337,7 @@ Development files needed for building things which link against evolution. %patch54 -p1 -b .send-recv-dialog %patch55 -p1 -b .version-checks %patch56 -p1 -b .ETreeTableAdapter-idle-crash +%patch57 -p1 -b .todo-conduit mkdir -p krb5-fakeprefix/include mkdir -p krb5-fakeprefix/lib @@ -755,6 +759,9 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/evolution/%{evo_major}/libmenus.so %changelog +* Sat Nov 03 2007 Matthew Barnes - 2.10.3-7.fc7 +- Add patch for RH bug #249640 (todo conduit crash). + * Wed Oct 31 2007 Dan Williams - 2.10.3-6.fc7 - Backport fix for GNOME bug #239441 From 3fa449c97817f88fad131f6537c67cdadd31f0c7 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Wed, 5 Mar 2008 15:09:49 +0000 Subject: [PATCH 15/19] - Add patch for CVE-2008-0072 (format string vulnerability). --- evolution-2.10.3-CVE-2008-0072.patch | 48 ++++++++++++++++++++++++++++ evolution.spec | 9 +++++- 2 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 evolution-2.10.3-CVE-2008-0072.patch diff --git a/evolution-2.10.3-CVE-2008-0072.patch b/evolution-2.10.3-CVE-2008-0072.patch new file mode 100644 index 0000000..32e3eec --- /dev/null +++ b/evolution-2.10.3-CVE-2008-0072.patch @@ -0,0 +1,48 @@ +diff -up evolution-2.10.3/mail/em-format.c.CVE-2008-0072 evolution-2.10.3/mail/em-format.c +--- evolution-2.10.3/mail/em-format.c.CVE-2008-0072 2008-03-04 15:44:32.000000000 -0500 ++++ evolution-2.10.3/mail/em-format.c 2008-03-04 15:45:23.000000000 -0500 +@@ -1155,7 +1155,7 @@ emf_application_xpkcs7mime(EMFormat *emf + opart = camel_mime_part_new(); + valid = camel_cipher_decrypt(context, part, opart, ex); + if (valid == NULL) { +- em_format_format_error(emf, stream, ex->desc?ex->desc:_("Could not parse S/MIME message: Unknown error")); ++ em_format_format_error(emf, stream, "%s", ex->desc?ex->desc:_("Could not parse S/MIME message: Unknown error")); + em_format_part_as(emf, stream, part, NULL); + } else { + if (emfc == NULL) +@@ -1305,7 +1305,7 @@ emf_multipart_encrypted(EMFormat *emf, C + if (valid == NULL) { + em_format_format_error(emf, stream, ex->desc?("Could not parse S/MIME message"):_("Could not parse S/MIME message: Unknown error")); + if (ex->desc) +- em_format_format_error(emf, stream, ex->desc); ++ em_format_format_error(emf, stream, "%s", ex->desc); + em_format_part_as(emf, stream, part, "multipart/mixed"); + } else { + if (emfc == NULL) +@@ -1470,7 +1470,7 @@ emf_multipart_signed(EMFormat *emf, Came + if (valid == NULL) { + em_format_format_error(emf, stream, ex->desc?_("Error verifying signature"):_("Unknown error verifying signature")); + if (ex->desc) +- em_format_format_error(emf, stream, ex->desc); ++ em_format_format_error(emf, stream, "%s", ex->desc); + em_format_part_as(emf, stream, part, "multipart/mixed"); + } else { + if (emfc == NULL) +@@ -1536,7 +1536,7 @@ emf_inlinepgp_signed(EMFormat *emf, Came + if (!valid) { + em_format_format_error(emf, stream, ex->desc?_("Error verifying signature"):_("Unknown error verifying signature")); + if (ex->desc) +- em_format_format_error(emf, stream, ex->desc); ++ em_format_format_error(emf, stream, "%s", ex->desc); + em_format_format_source(emf, stream, ipart); + /* I think this will loop: em_format_part_as(emf, stream, part, "text/plain"); */ + camel_exception_free(ex); +@@ -1607,7 +1607,7 @@ emf_inlinepgp_encrypted(EMFormat *emf, C + if (!valid) { + em_format_format_error(emf, stream, ex->desc?("Could not parse S/MIME message"):_("Could not parse S/MIME message: Unknown error")); + if (ex->desc) +- em_format_format_error(emf, stream, ex->desc); ++ em_format_format_error(emf, stream, "%s", ex->desc); + em_format_format_source(emf, stream, ipart); + /* I think this will loop: em_format_part_as(emf, stream, part, "text/plain"); */ + camel_exception_free(ex); diff --git a/evolution.spec b/evolution.spec index 6c36ade..00fb1f1 100644 --- a/evolution.spec +++ b/evolution.spec @@ -47,7 +47,7 @@ Name: evolution Version: 2.10.3 -Release: 7%{?dist} +Release: 8%{?dist} License: GPL Group: Applications/Productivity Summary: GNOME's next-generation groupware suite @@ -179,6 +179,9 @@ Patch56: evolution-2.10.3-fix-ETreeTableAdapter-crash.patch # RH bug #249640 / GNOME bug #442329 Patch57: evolution-2.10.3-todo-conduit.patch +# CVE-2008-0072 +Patch58: evolution-2.10.3-CVE-2008-0072.patch + ## Dependencies ### Requires(post): GConf2 @@ -338,6 +341,7 @@ Development files needed for building things which link against evolution. %patch55 -p1 -b .version-checks %patch56 -p1 -b .ETreeTableAdapter-idle-crash %patch57 -p1 -b .todo-conduit +%patch58 -p1 -b .CVE-2008-0072 mkdir -p krb5-fakeprefix/include mkdir -p krb5-fakeprefix/lib @@ -759,6 +763,9 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/evolution/%{evo_major}/libmenus.so %changelog +* Tue Mar 04 2008 Matthew Barnes - 2.10.3-8.fc7 +- Add patch for CVE-2008-0072 (format string vulnerability). + * Sat Nov 03 2007 Matthew Barnes - 2.10.3-7.fc7 - Add patch for RH bug #249640 (todo conduit crash). From e71b1dd66c71a1c25bdf03ee96b7f26ba5dfb90c Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Wed, 5 Mar 2008 15:40:58 +0000 Subject: [PATCH 16/19] Add a Bugzilla reference for CVE-2008-0072. --- evolution.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/evolution.spec b/evolution.spec index 00fb1f1..f3139cb 100644 --- a/evolution.spec +++ b/evolution.spec @@ -179,7 +179,7 @@ Patch56: evolution-2.10.3-fix-ETreeTableAdapter-crash.patch # RH bug #249640 / GNOME bug #442329 Patch57: evolution-2.10.3-todo-conduit.patch -# CVE-2008-0072 +# RH bug #436080 / CVE-2008-0072 Patch58: evolution-2.10.3-CVE-2008-0072.patch ## Dependencies ### From d8f8c024529b9a719f74d3615edd09a2c9fac105 Mon Sep 17 00:00:00 2001 From: Daniel Williams Date: Tue, 25 Mar 2008 14:57:59 +0000 Subject: [PATCH 17/19] - Add patch for GNOME bug #524310 --- evolution-2.10.3-server-message-double-free.patch | 15 +++++++++++++++ evolution.spec | 9 ++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 evolution-2.10.3-server-message-double-free.patch diff --git a/evolution-2.10.3-server-message-double-free.patch b/evolution-2.10.3-server-message-double-free.patch new file mode 100644 index 0000000..8c4316c --- /dev/null +++ b/evolution-2.10.3-server-message-double-free.patch @@ -0,0 +1,15 @@ +diff -up evolution-2.10.3/mail/mail-session.c.server-message-double-free evolution-2.10.3/mail/mail-session.c +--- evolution-2.10.3/mail/mail-session.c.server-message-double-free 2008-03-25 10:01:13.000000000 -0400 ++++ evolution-2.10.3/mail/mail-session.c 2008-03-25 10:01:25.000000000 -0400 +@@ -389,10 +389,8 @@ alert_user(CamelSession *session, CamelS + mail_msg_unref (m); + } + +- if (m->ismain) { +- user_message_free (m); ++ if (m->ismain) + mail_msg_unref (m); +- } + + return result; + } diff --git a/evolution.spec b/evolution.spec index f3139cb..4c61fa1 100644 --- a/evolution.spec +++ b/evolution.spec @@ -47,7 +47,7 @@ Name: evolution Version: 2.10.3 -Release: 8%{?dist} +Release: 9%{?dist} License: GPL Group: Applications/Productivity Summary: GNOME's next-generation groupware suite @@ -182,6 +182,9 @@ Patch57: evolution-2.10.3-todo-conduit.patch # RH bug #436080 / CVE-2008-0072 Patch58: evolution-2.10.3-CVE-2008-0072.patch +# GNOME bug #524310 +Patch59: evolution-2.10.3-server-message-double-free.patch + ## Dependencies ### Requires(post): GConf2 @@ -342,6 +345,7 @@ Development files needed for building things which link against evolution. %patch56 -p1 -b .ETreeTableAdapter-idle-crash %patch57 -p1 -b .todo-conduit %patch58 -p1 -b .CVE-2008-0072 +%patch59 -p1 -b .server-message-double-free mkdir -p krb5-fakeprefix/include mkdir -p krb5-fakeprefix/lib @@ -763,6 +767,9 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/evolution/%{evo_major}/libmenus.so %changelog +* Tue Mar 25 2008 Dan Williams - 2.10.3-9.fc7 +- Add patch for GNOME bug #524310 + * Tue Mar 04 2008 Matthew Barnes - 2.10.3-8.fc7 - Add patch for CVE-2008-0072 (format string vulnerability). From bc71d9301c1d4eb26036a272e53ce04580452e25 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Wed, 4 Jun 2008 10:03:29 +0000 Subject: [PATCH 18/19] - Add patches for RH bug #449922 (buffer overflow vulnerabilities). --- evolution-2.10.3-CVE-2008-1108.patch | 310 +++++++++++++++++++++++++++ evolution-2.10.3-CVE-2008-1109.patch | 61 ++++++ evolution.spec | 13 +- 3 files changed, 383 insertions(+), 1 deletion(-) create mode 100644 evolution-2.10.3-CVE-2008-1108.patch create mode 100644 evolution-2.10.3-CVE-2008-1109.patch diff --git a/evolution-2.10.3-CVE-2008-1108.patch b/evolution-2.10.3-CVE-2008-1108.patch new file mode 100644 index 0000000..d577c13 --- /dev/null +++ b/evolution-2.10.3-CVE-2008-1108.patch @@ -0,0 +1,310 @@ +diff -up evolution-2.10.3/calendar/gui/e-itip-control.c.CVE-2008-1108 evolution-2.10.3/calendar/gui/e-itip-control.c +--- evolution-2.10.3/calendar/gui/e-itip-control.c.CVE-2008-1108 2008-06-04 05:55:50.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/e-itip-control.c 2008-06-04 06:00:35.000000000 -0400 +@@ -650,7 +650,7 @@ find_attendee (icalcomponent *ical_comp, + + static void + write_label_piece (EItipControl *itip, ECalComponentDateTime *dt, +- char *buffer, int size, ++ GString *buffer, + const char *stext, const char *etext, + gboolean just_date) + { +@@ -675,13 +675,13 @@ write_label_piece (EItipControl *itip, E + tmp_tm.tm_hour = tmp_tm.tm_min = tmp_tm.tm_sec = 0; + + if (stext != NULL) +- strcat (buffer, stext); ++ g_string_append (buffer, stext); + + e_time_format_date_and_time (&tmp_tm, + calendar_config_get_24_hour_format (), + FALSE, FALSE, + time_buf, sizeof (time_buf)); +- strcat (buffer, time_buf); ++ g_string_append (buffer, time_buf); + + if (!dt->value->is_utc && dt->tzid) { + zone = icalcomponent_get_timezone (priv->top_level, dt->tzid); +@@ -693,21 +693,21 @@ write_label_piece (EItipControl *itip, E + UTF-8. But it probably is not translated. */ + display_name = icaltimezone_get_display_name (zone); + if (display_name && *display_name) { +- strcat (buffer, " ["); ++ g_string_append_len (buffer, " [", 16); + + /* We check if it is one of our builtin timezone names, + in which case we call gettext to translate it. */ + if (icaltimezone_get_builtin_timezone (display_name)) { +- strcat (buffer, _(display_name)); ++ g_string_append_printf (buffer, "%s", _(display_name)); + } else { +- strcat (buffer, display_name); ++ g_string_append_printf (buffer, "%s", display_name); + } +- strcat (buffer, "]"); ++ g_string_append_len (buffer, "]", 8); + } + } + + if (etext != NULL) +- strcat (buffer, etext); ++ g_string_append (buffer, etext); + } + + static const char * +@@ -744,19 +744,17 @@ get_dayname (struct icalrecurrencetype * + + static void + write_recurrence_piece (EItipControl *itip, ECalComponent *comp, +- char *buffer, int size) ++ GString *buffer) + { + GSList *rrules; + struct icalrecurrencetype *r; +- int len, i; ++ int i; + +- strcpy (buffer, "Recurring: "); +- len = strlen (buffer); +- buffer += len; +- size -= len; ++ g_string_append_len (buffer, "Recurring: ", 18); + + if (!e_cal_component_has_simple_recurrence (comp)) { +- strcpy (buffer, _("Yes. (Complex Recurrence)")); ++ g_string_append_printf ( ++ buffer, "%s", _("Yes. (Complex Recurrence)")); + return; + } + +@@ -772,7 +770,10 @@ write_recurrence_piece (EItipControl *it + Every %d day/days" */ + /* For Translators : 'Every day' is event Recurring every day */ + /* For Translators : 'Every %d days' is event Recurring every %d days. %d is a digit */ +- sprintf (buffer, ngettext("Every day", "Every %d days", r->interval), r->interval); ++ g_string_append_printf ( ++ buffer, ngettext ("Every day", ++ "Every %d days", r->interval), ++ r->interval); + break; + + case ICAL_WEEKLY_RECURRENCE: +@@ -782,29 +783,36 @@ write_recurrence_piece (EItipControl *it + Every %d week/weeks" */ + /* For Translators : 'Every week' is event Recurring every week */ + /* For Translators : 'Every %d weeks' is event Recurring every %d weeks. %d is a digit */ +- sprintf (buffer, ngettext("Every week", "Every %d weeks", r->interval), r->interval); ++ g_string_append_printf ( ++ buffer, ngettext ("Every week", ++ "Every %d weeks", r->interval), ++ r->interval); + } else { + /* For Translators : 'Every week on' is event Recurring every week on (dayname) and (dayname) and (dayname) */ + /* For Translators : 'Every %d weeks on' is event Recurring: every %d weeks on (dayname) and (dayname). %d is a digit */ +- sprintf (buffer, ngettext("Every week on ", "Every %d weeks on ", r->interval), r->interval); ++ g_string_append_printf ( ++ buffer, ngettext ("Every week on ", ++ "Every %d weeks on ", r->interval), ++ r->interval); + + for (i = 1; i < 8 && r->by_day[i] != ICAL_RECURRENCE_ARRAY_MAX; i++) { + if (i > 1) +- strcat (buffer, ", "); +- strcat (buffer, get_dayname (r, i - 1)); ++ g_string_append_len (buffer, ", ", 2); ++ g_string_append (buffer, get_dayname (r, i - 1)); + } + if (i > 1) + /* For Translators : 'and' is part of the sentence 'event recurring every week on (dayname) and (dayname)' */ +- strcat (buffer, _(" and ")); +- strcat (buffer, get_dayname (r, i - 1)); ++ g_string_append_printf (buffer, "%s", _(" and ")); ++ g_string_append (buffer, get_dayname (r, i - 1)); + } + break; + + case ICAL_MONTHLY_RECURRENCE: + if (r->by_month_day[0] != ICAL_RECURRENCE_ARRAY_MAX) { + /* For Translators : 'The %s day of' is part of the sentence 'event recurring on the (nth) day of every month.' */ +- sprintf (buffer, _("The %s day of "), +- nth (r->by_month_day[0])); ++ g_string_append_printf ( ++ buffer, _("The %s day of "), ++ nth (r->by_month_day[0])); + } else { + int pos; + +@@ -818,20 +826,21 @@ write_recurrence_piece (EItipControl *it + + /* For Translators : 'The %s %s of' is part of the sentence 'event recurring on the (nth) (dayname) of every month.' + eg,third monday of every month */ +- sprintf (buffer, _("The %s %s of "), +- nth (pos), get_dayname (r, 0)); ++ g_string_append_printf ( ++ buffer, _("The %s %s of "), ++ nth (pos), get_dayname (r, 0)); + } + +- len = strlen (buffer); +- buffer += len; +- size -= len; + /* For Translators: In this can also be translated as "With the period of %d + month/months", where %d is a number. The entire sentence is of the form "Recurring: + Every %d month/months" */ + /* For Translators : 'every month' is part of the sentence 'event recurring on the (nth) day of every month.' */ + /* For Translators : 'every %d months' is part of the sentence 'event recurring on the (nth) day of every %d months.' + %d is a digit */ +- sprintf (buffer, ngettext("every month","every %d months", r->interval), r->interval); ++ g_string_append_printf ( ++ buffer, ngettext ("every month", ++ "every %d months", r->interval), ++ r->interval); + break; + + case ICAL_YEARLY_RECURRENCE: +@@ -840,20 +849,22 @@ write_recurrence_piece (EItipControl *it + Every %d year/years" */ + /* For Translators : 'Every year' is event Recurring every year */ + /* For Translators : 'Every %d years' is event Recurring every %d years. %d is a digit */ +- sprintf (buffer, ngettext("Every year", "Every %d years", r->interval), r->interval); ++ g_string_append_printf ( ++ buffer, ngettext ("Every year", ++ "Every %d years", r->interval), ++ r->interval); + break; + + default: + g_assert_not_reached (); + } + +- len = strlen (buffer); +- buffer += len; +- size -= len; + if (r->count) { + /* For Translators:'a total of %d time' is part of the sentence of the form 'event recurring every day,a total of % time.' %d is a digit*/ + /* For Translators:'a total of %d times' is part of the sentence of the form 'event recurring every day,a total of % times.' %d is a digit*/ +- sprintf (buffer, ngettext("a total of %d time", " a total of %d times", r->count), r->count); ++ g_string_append_printf ( ++ buffer, ngettext ("a total of %d time", ++ " a total of %d times", r->count), r->count); + } else if (!icaltime_is_null_time (r->until)) { + ECalComponentDateTime dt; + +@@ -861,12 +872,12 @@ write_recurrence_piece (EItipControl *it + dt.value = &r->until; + dt.tzid = icaltimezone_get_tzid ((icaltimezone *)r->until.zone); + +- write_label_piece (itip, &dt, buffer, size, ++ write_label_piece (itip, &dt, buffer, + /* For Translators : ', ending on' is part of the sentence of the form 'event recurring every day, ending on (date).'*/ + _(", ending on "), NULL, TRUE); + } + +- strcat (buffer, "
"); ++ g_string_append_len (buffer, "
", 4); + } + + static void +@@ -874,47 +885,51 @@ set_date_label (EItipControl *itip, GtkH + ECalComponent *comp) + { + ECalComponentDateTime datetime; +- static char buffer[1024]; ++ GString *buffer; + gchar *str; + gboolean wrote = FALSE, task_completed = FALSE; + ECalComponentVType type; + ++ buffer = g_string_sized_new (1024); + type = e_cal_component_get_vtype (comp); + +- buffer[0] = '\0'; + e_cal_component_get_dtstart (comp, &datetime); + if (datetime.value) { + /* For Translators : 'starts' is starts:date implying a task starts on what date */ + str = g_strdup_printf ("%s:", _("Starts")); +- write_label_piece (itip, &datetime, buffer, 1024, +- str, +- "
", FALSE); +- gtk_html_write (html, html_stream, buffer, strlen(buffer)); ++ write_label_piece (itip, &datetime, buffer, str, "
", FALSE); ++ gtk_html_write (html, html_stream, buffer->str, buffer->len); + wrote = TRUE; + g_free (str); + } + e_cal_component_free_datetime (&datetime); + +- buffer[0] = '\0'; ++ /* Reset the buffer. */ ++ g_string_truncate (buffer, 0); ++ + e_cal_component_get_dtend (comp, &datetime); + if (datetime.value){ + /* For Translators : 'ends' is ends:date implying a task ends on what date */ + str = g_strdup_printf ("%s:", _("Ends")); +- write_label_piece (itip, &datetime, buffer, 1024, str, "
", FALSE); +- gtk_html_write (html, html_stream, buffer, strlen (buffer)); ++ write_label_piece (itip, &datetime, buffer, str, "
", FALSE); ++ gtk_html_write (html, html_stream, buffer->str, buffer->len); + wrote = TRUE; + g_free (str); + } + e_cal_component_free_datetime (&datetime); + +- buffer[0] = '\0'; ++ /* Reset the buffer. */ ++ g_string_truncate (buffer, 0); ++ + if (e_cal_component_has_recurrences (comp)) { +- write_recurrence_piece (itip, comp, buffer, 1024); +- gtk_html_write (html, html_stream, buffer, strlen (buffer)); ++ write_recurrence_piece (itip, comp, buffer); ++ gtk_html_write (html, html_stream, buffer->str, buffer->len); + wrote = TRUE; + } + +- buffer[0] = '\0'; ++ /* Reset the buffer. */ ++ g_string_truncate (buffer, 0); ++ + datetime.tzid = NULL; + e_cal_component_get_completed (comp, &datetime.value); + if (type == E_CAL_COMPONENT_TODO && datetime.value) { +@@ -922,20 +937,22 @@ set_date_label (EItipControl *itip, GtkH + timezone. */ + str = g_strdup_printf ("%s:", _("Completed")); + datetime.value->is_utc = TRUE; +- write_label_piece (itip, &datetime, buffer, 1024, str, "
", FALSE); +- gtk_html_write (html, html_stream, buffer, strlen (buffer)); ++ write_label_piece (itip, &datetime, buffer, str, "
", FALSE); ++ gtk_html_write (html, html_stream, buffer->str, buffer->len); + wrote = TRUE; + task_completed = TRUE; + g_free (str); + } + e_cal_component_free_datetime (&datetime); + +- buffer[0] = '\0'; ++ /* Reset the buffer. */ ++ g_string_truncate (buffer, 0); ++ + e_cal_component_get_due (comp, &datetime); + if (type == E_CAL_COMPONENT_TODO && !task_completed && datetime.value) { + str = g_strdup_printf ("%s:", _("Due")); +- write_label_piece (itip, &datetime, buffer, 1024, str, "
", FALSE); +- gtk_html_write (html, html_stream, buffer, strlen (buffer)); ++ write_label_piece (itip, &datetime, buffer, str, "
", FALSE); ++ gtk_html_write (html, html_stream, buffer->str, buffer->len); + wrote = TRUE; + g_free (str); + } +@@ -944,6 +961,8 @@ set_date_label (EItipControl *itip, GtkH + + if (wrote) + gtk_html_stream_printf (html_stream, "
"); ++ ++ g_string_free (buffer, TRUE); + } + + static void diff --git a/evolution-2.10.3-CVE-2008-1109.patch b/evolution-2.10.3-CVE-2008-1109.patch new file mode 100644 index 0000000..46cae4d --- /dev/null +++ b/evolution-2.10.3-CVE-2008-1109.patch @@ -0,0 +1,61 @@ +diff -up evolution-2.10.3/calendar/gui/itip-utils.c.CVE-2008-1109 evolution-2.10.3/calendar/gui/itip-utils.c +--- evolution-2.10.3/calendar/gui/itip-utils.c.CVE-2008-1109 2008-06-04 05:55:50.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/itip-utils.c 2008-06-04 05:58:49.000000000 -0400 +@@ -158,50 +158,16 @@ get_attendee (GSList *attendees, char *a + + + static char * +-html_new_lines_for (char *string) ++html_new_lines_for (const char *string) + { +- char *html_string = (char *) malloc (sizeof (char)* (3500)); +- int length = strlen (string); +- int index = 0; +- char *index_ptr = string; +- char *temp = string; ++ gchar **lines; ++ gchar *joined; + +- /*Find the first occurence*/ +- index_ptr = strstr ((const char *)temp, "\n"); ++ lines = g_strsplit_set (string, "\n", -1); ++ joined = g_strjoinv ("
", lines); ++ g_strfreev (lines); + +- /*Doesn't occur*/ +- if (index_ptr == NULL) { +- strcpy (html_string, (const char *)string); +- html_string[length] = '\0'; +- return html_string; +- } +- +- /*Split into chunks inserting
for \n */ +- do{ +- while (temp != index_ptr){ +- html_string[index++] = *temp; +- temp++; +- } +- temp++; +- +- html_string[index++] = '<'; +- html_string[index++] = 'b'; +- html_string[index++] = 'r'; +- html_string[index++] = '>'; +- +- index_ptr = strstr ((const char *)temp, "\n"); +- +- } while (index_ptr); +- +- /*Don't leave out the last chunk*/ +- while (*temp != '\0'){ +- html_string[index++] = *temp; +- temp++; +- } +- +- html_string[index] = '\0'; +- +- return html_string; ++ return joined; + } + + char * diff --git a/evolution.spec b/evolution.spec index 4c61fa1..1da6855 100644 --- a/evolution.spec +++ b/evolution.spec @@ -47,7 +47,7 @@ Name: evolution Version: 2.10.3 -Release: 9%{?dist} +Release: 10%{?dist} License: GPL Group: Applications/Productivity Summary: GNOME's next-generation groupware suite @@ -185,6 +185,12 @@ Patch58: evolution-2.10.3-CVE-2008-0072.patch # GNOME bug #524310 Patch59: evolution-2.10.3-server-message-double-free.patch +# RH bug #449922 / CVE-2008-1108 +Patch60: evolution-2.10.3-CVE-2008-1108.patch + +# RH bug #449922 / CVE-2008-1109 +Patch61: evolution-2.10.3-CVE-2008-1109.patch + ## Dependencies ### Requires(post): GConf2 @@ -346,6 +352,8 @@ Development files needed for building things which link against evolution. %patch57 -p1 -b .todo-conduit %patch58 -p1 -b .CVE-2008-0072 %patch59 -p1 -b .server-message-double-free +%patch60 -p1 -b .CVE-2008-1108 +%patch61 -p1 -b .CVE-2008-1109 mkdir -p krb5-fakeprefix/include mkdir -p krb5-fakeprefix/lib @@ -767,6 +775,9 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/evolution/%{evo_major}/libmenus.so %changelog +* Wed Jun 04 2008 Matthew Barnes - 2.10.3-10.fc7 +- Add patches for RH bug #449922 (buffer overflow vulnerabilities). + * Tue Mar 25 2008 Dan Williams - 2.10.3-9.fc7 - Add patch for GNOME bug #524310 From e309a652309f9463218137f21052cd094ad6a8c9 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 28 Jul 2010 13:59:40 +0000 Subject: [PATCH 19/19] dist-git conversion --- .cvsignore => .gitignore | 0 Makefile | 6 ------ branch | 1 - 3 files changed, 7 deletions(-) rename .cvsignore => .gitignore (100%) delete mode 100644 Makefile delete mode 100644 branch diff --git a/.cvsignore b/.gitignore similarity index 100% rename from .cvsignore rename to .gitignore diff --git a/Makefile b/Makefile deleted file mode 100644 index 8a15db1..0000000 --- a/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -# Makefile for source rpm: evolution -# $Id$ -NAME := evolution -SPECFILE = $(firstword $(wildcard *.spec)) - -include ../common/Makefile.common diff --git a/branch b/branch deleted file mode 100644 index c48525c..0000000 --- a/branch +++ /dev/null @@ -1 +0,0 @@ -F-7