rpms/evolution/F-7 evolution-2.8.1-kill-ethread.patch, 1.6, 1.7 evolution.spec, 1.263, 1.264

Matthew Barnes (mbarnes) fedora-extras-commits at redhat.com
Wed Jun 27 18:37:41 UTC 2007


Author: mbarnes

Update of /cvs/pkgs/rpms/evolution/F-7
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv7613

Modified Files:
	evolution-2.8.1-kill-ethread.patch evolution.spec 
Log Message:

* Wed Jun 27 2007 Matthew Barnes <mbarnes at redhat.com> - 2.10.2-3.fc7
- Revise patch for GNOME bug #362638 to fix RH bug #245289 (frequent hangs).


evolution-2.8.1-kill-ethread.patch:

Index: evolution-2.8.1-kill-ethread.patch
===================================================================
RCS file: /cvs/pkgs/rpms/evolution/F-7/evolution-2.8.1-kill-ethread.patch,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- evolution-2.8.1-kill-ethread.patch	6 Jun 2007 17:32:14 -0000	1.6
+++ evolution-2.8.1-kill-ethread.patch	27 Jun 2007 18:37:05 -0000	1.7
@@ -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 <config.h>
  #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 <gtkhtml/gtkhtml-stream.h>
  
@@ -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 <libgnome/gnome-sound.h>
  
@@ -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 <gtk/gtk.h>
  #include <libgnome/gnome-i18n.h>
@@ -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;


Index: evolution.spec
===================================================================
RCS file: /cvs/pkgs/rpms/evolution/F-7/evolution.spec,v
retrieving revision 1.263
retrieving revision 1.264
diff -u -r1.263 -r1.264
--- evolution.spec	6 Jun 2007 17:32:14 -0000	1.263
+++ evolution.spec	27 Jun 2007 18:37:05 -0000	1.264
@@ -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 @@
 %{_libdir}/evolution/%{evo_major}/libmenus.so
 
 %changelog
+* Wed Jun 27 2007 Matthew Barnes <mbarnes at redhat.com> - 2.10.2-3.fc7
+- Revise patch for GNOME bug #362638 to fix RH bug #245289 (frequent hangs).
+
 * Wed Jun 06 2007 Matthew Barnes <mbarnes at redhat.com> - 2.10.2-2.fc7
 - Revise patch for GNOME bug #362638 to fix RH bug #240507 (hang on exit).
 




More information about the fedora-extras-commits mailing list