diff --git a/evolution-2.8.1-kill-ethread.patch b/evolution-2.8.1-kill-ethread.patch index 1a02390..1d49a68 100644 --- a/evolution-2.8.1-kill-ethread.patch +++ b/evolution-2.8.1-kill-ethread.patch @@ -1,5 +1,5 @@ ---- evolution-2.9.91/mail/mail-send-recv.c.kill-ethread 2007-01-03 10:27:18.000000000 -0500 -+++ evolution-2.9.91/mail/mail-send-recv.c 2007-02-15 16:04:42.000000000 -0500 +--- evolution-2.10.0/mail/mail-send-recv.c.kill-ethread 2007-01-03 10:34:12.000000000 -0500 ++++ evolution-2.10.0/mail/mail-send-recv.c 2007-03-30 15:47:31.000000000 -0400 @@ -819,7 +819,7 @@ m->folders = folders; m->info = sinfo; @@ -9,8 +9,8 @@ } else { receive_done ("", data); } ---- evolution-2.9.91/mail/mail-component.c.kill-ethread 2007-01-03 10:27:18.000000000 -0500 -+++ evolution-2.9.91/mail/mail-component.c 2007-02-15 16:04:42.000000000 -0500 +--- evolution-2.10.0/mail/mail-component.c.kill-ethread 2007-03-12 16:13:58.000000000 -0400 ++++ evolution-2.10.0/mail/mail-component.c 2007-03-30 15:47:31.000000000 -0400 @@ -965,7 +965,7 @@ if (camel_url_get_param(url, "uid") != NULL) { char *curi = em_uri_to_camel(uri); @@ -20,8 +20,8 @@ g_free(curi); } else { g_warning("email uri's must include a uid parameter"); ---- evolution-2.9.91/mail/mail-ops.c.kill-ethread 2007-01-03 10:27:18.000000000 -0500 -+++ evolution-2.9.91/mail/mail-ops.c 2007-02-15 16:04:42.000000000 -0500 +--- evolution-2.10.0/mail/mail-ops.c.kill-ethread 2007-01-03 10:34:12.000000000 -0500 ++++ evolution-2.10.0/mail/mail-ops.c 2007-03-30 15:47:31.000000000 -0400 @@ -221,7 +221,7 @@ camel_filter_driver_remove_rule_by_name (m->driver, "new-mail-notification"); } @@ -247,8 +247,8 @@ return id; } ---- evolution-2.9.91/mail/em-folder-utils.c.kill-ethread 2007-01-03 10:27:18.000000000 -0500 -+++ evolution-2.9.91/mail/em-folder-utils.c 2007-02-15 16:04:42.000000000 -0500 +--- evolution-2.10.0/mail/em-folder-utils.c.kill-ethread 2007-01-03 10:34:12.000000000 -0500 ++++ evolution-2.10.0/mail/em-folder-utils.c 2007-03-30 15:47:31.000000000 -0400 @@ -260,7 +260,7 @@ m->delete = delete; seq = m->msg.seq; @@ -267,8 +267,8 @@ return id; } ---- evolution-2.9.91/mail/importers/elm-importer.c.kill-ethread 2007-01-03 10:27:16.000000000 -0500 -+++ evolution-2.9.91/mail/importers/elm-importer.c 2007-02-15 16:04:42.000000000 -0500 +--- evolution-2.10.0/mail/importers/elm-importer.c.kill-ethread 2007-01-03 10:34:11.000000000 -0500 ++++ evolution-2.10.0/mail/importers/elm-importer.c 2007-03-30 15:47:31.000000000 -0400 @@ -312,7 +312,7 @@ id = m->msg.seq; @@ -278,8 +278,8 @@ return id; } ---- evolution-2.9.91/mail/importers/mail-importer.c.kill-ethread 2007-01-03 10:27:16.000000000 -0500 -+++ evolution-2.9.91/mail/importers/mail-importer.c 2007-02-15 16:04:42.000000000 -0500 +--- evolution-2.10.0/mail/importers/mail-importer.c.kill-ethread 2007-01-03 10:34:11.000000000 -0500 ++++ evolution-2.10.0/mail/importers/mail-importer.c 2007-03-30 15:47:31.000000000 -0400 @@ -329,7 +329,7 @@ } @@ -289,8 +289,8 @@ return id; } ---- evolution-2.9.91/mail/importers/pine-importer.c.kill-ethread 2007-01-03 10:27:16.000000000 -0500 -+++ evolution-2.9.91/mail/importers/pine-importer.c 2007-02-15 16:04:42.000000000 -0500 +--- evolution-2.10.0/mail/importers/pine-importer.c.kill-ethread 2007-01-03 10:34:11.000000000 -0500 ++++ evolution-2.10.0/mail/importers/pine-importer.c 2007-03-30 15:47:31.000000000 -0400 @@ -350,7 +350,7 @@ id = m->msg.seq; @@ -300,8 +300,8 @@ return id; } ---- evolution-2.9.91/mail/mail-vfolder.c.kill-ethread 2007-01-03 10:27:18.000000000 -0500 -+++ evolution-2.9.91/mail/mail-vfolder.c 2007-02-15 16:04:42.000000000 -0500 +--- evolution-2.10.0/mail/mail-vfolder.c.kill-ethread 2007-01-03 10:34:12.000000000 -0500 ++++ evolution-2.10.0/mail/mail-vfolder.c 2007-03-30 15:47:31.000000000 -0400 @@ -188,7 +188,7 @@ m->sources_folder = sources_folder; @@ -347,9 +347,9 @@ from = em_uri_from_camel(cfrom); to = em_uri_from_camel(cto); ---- evolution-2.9.91/mail/em-format-html.c.kill-ethread 2007-01-03 10:27:18.000000000 -0500 -+++ evolution-2.9.91/mail/em-format-html.c 2007-02-15 16:04:42.000000000 -0500 -@@ -1374,7 +1374,7 @@ +--- evolution-2.10.0/mail/em-format-html.c.kill-ethread 2007-02-26 04:59:59.000000000 -0500 ++++ evolution-2.10.0/mail/em-format-html.c 2007-03-30 15:47:31.000000000 -0400 +@@ -1375,7 +1375,7 @@ } efh->priv->format_id = m->msg.seq; @@ -358,8 +358,8 @@ } efh->priv->format_timeout_id = 0; ---- evolution-2.9.91/mail/em-folder-properties.c.kill-ethread 2007-01-03 10:27:18.000000000 -0500 -+++ evolution-2.9.91/mail/em-folder-properties.c 2007-02-15 16:04:42.000000000 -0500 +--- evolution-2.10.0/mail/em-folder-properties.c.kill-ethread 2007-01-03 10:34:12.000000000 -0500 ++++ evolution-2.10.0/mail/em-folder-properties.c 2007-03-30 15:47:31.000000000 -0400 @@ -379,7 +379,7 @@ } @@ -369,8 +369,8 @@ else emfp_dialog_got_folder((char *)uri, folder, NULL); } ---- evolution-2.9.91/mail/em-folder-tree.c.kill-ethread 2007-01-03 10:27:18.000000000 -0500 -+++ evolution-2.9.91/mail/em-folder-tree.c 2007-02-15 16:04:42.000000000 -0500 +--- evolution-2.10.0/mail/em-folder-tree.c.kill-ethread 2007-01-03 10:34:12.000000000 -0500 ++++ evolution-2.10.0/mail/em-folder-tree.c 2007-03-30 15:47:31.000000000 -0400 @@ -966,7 +966,7 @@ tree_drag_data_action(struct _DragDataReceivedAsync *m) { @@ -389,8 +389,8 @@ } static gboolean ---- evolution-2.9.91/mail/em-folder-browser.c.kill-ethread 2007-02-12 05:37:31.000000000 -0500 -+++ evolution-2.9.91/mail/em-folder-browser.c 2007-02-15 16:04:42.000000000 -0500 +--- evolution-2.10.0/mail/em-folder-browser.c.kill-ethread 2007-02-26 04:59:59.000000000 -0500 ++++ evolution-2.10.0/mail/em-folder-browser.c 2007-03-30 15:47:31.000000000 -0400 @@ -948,7 +948,7 @@ m->sources_folder = sources_folder; @@ -400,8 +400,8 @@ return id; } ---- evolution-2.9.91/mail/message-list.c.kill-ethread 2007-01-18 07:31:51.000000000 -0500 -+++ evolution-2.9.91/mail/message-list.c 2007-02-15 16:04:42.000000000 -0500 +--- evolution-2.10.0/mail/message-list.c.kill-ethread 2007-01-23 03:23:43.000000000 -0500 ++++ evolution-2.10.0/mail/message-list.c 2007-03-30 15:47:31.000000000 -0400 @@ -1888,7 +1888,7 @@ ml_drop_action(struct _drop_msg *m) { @@ -420,8 +420,86 @@ m->ml->regen_timeout_msg = NULL; m->ml->regen_timeout_id = 0; ---- evolution-2.9.91/mail/em-format-html-print.c.kill-ethread 2007-02-12 01:58:01.000000000 -0500 -+++ evolution-2.9.91/mail/em-format-html-print.c 2007-02-15 16:04:42.000000000 -0500 +--- evolution-2.10.0/mail/em-sync-stream.h.kill-ethread 2007-01-03 10:34:12.000000000 -0500 ++++ evolution-2.10.0/mail/em-sync-stream.h 2007-03-30 15:47:31.000000000 -0400 +@@ -29,41 +29,45 @@ + #ifndef EM_SYNC_STREAM_H + #define EM_SYNC_STREAM_H + +-#ifdef __cplusplus +-extern "C" { +-#pragma } +-#endif /* __cplusplus */ +- +-#define EM_SYNC_STREAM_TYPE (em_sync_stream_get_type ()) +-#define EM_SYNC_STREAM(obj) (CAMEL_CHECK_CAST((obj), EM_SYNC_STREAM_TYPE, EMSyncStream)) +-#define EM_SYNC_STREAM_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), EM_SYNC_STREAM_TYPE, EMSyncStreamClass)) +-#define EM_IS_SYNC_STREAM(o) (CAMEL_CHECK_TYPE((o), EM_SYNC_STREAM_TYPE)) +- + #include + #include + +-typedef struct _EMSyncStream { +- CamelStream parent_stream; +- +- struct _EMSyncStreamPrivate *priv; ++#define EM_SYNC_STREAM_TYPE \ ++ (em_sync_stream_get_type ()) ++#define EM_SYNC_STREAM(obj) \ ++ (CAMEL_CHECK_CAST \ ++ ((obj), EM_SYNC_STREAM_TYPE, EMSyncStream)) ++#define EM_SYNC_STREAM_CLASS(cls) \ ++ (CAMEL_CHECK_CLASS_CAST \ ++ ((cls), EM_SYNC_STREAM_TYPE, EMSyncStreamClass)) ++#define EM_IS_SYNC_STREAM(obj) \ ++ (CAMEL_CHECK_TYPE ((obj), EM_SYNC_STREAM_TYPE)) ++ ++G_BEGIN_DECLS ++ ++typedef struct _EMSyncStream EMSyncStream; ++typedef struct _EMSyncStreamClass EMSyncStreamClass; ++ ++struct _EMSyncStream { ++ CamelStream parent; ++ GString *buffer; ++ gboolean cancel; ++}; + +- int cancel; +-} EMSyncStream; +- +-typedef struct { ++struct _EMSyncStreamClass { + CamelStreamClass parent_class; + +- ssize_t (*sync_write) (CamelStream *stream, const char *buffer, size_t n); +- int (*sync_close) (CamelStream *stream); +- int (*sync_flush) (CamelStream *stream); +- +-} EMSyncStreamClass; +- +-CamelType em_sync_stream_get_type (void); +-void em_sync_stream_set_buffer_size(EMSyncStream *, size_t size); +- +-#ifdef __cplusplus +-} +-#endif /* __cplusplus */ ++ gssize (*sync_write) (CamelStream *stream, ++ const gchar *string, ++ gsize len); ++ int (*sync_close) (CamelStream *stream); ++ int (*sync_flush) (CamelStream *stream); ++}; ++ ++CamelType em_sync_stream_get_type (void); ++void em_sync_stream_set_buffer_size (EMSyncStream *stream, ++ gsize size); ++ ++G_END_DECLS + + #endif /* EM_SYNC_STREAM_H */ +--- evolution-2.10.0/mail/em-format-html-print.c.kill-ethread 2007-02-26 04:59:59.000000000 -0500 ++++ evolution-2.10.0/mail/em-format-html-print.c 2007-03-30 15:47:31.000000000 -0400 @@ -262,7 +262,7 @@ g_object_ref(source); g_object_ref(efhp); @@ -431,37 +509,435 @@ return 0; /* damn async ... */ } ---- evolution-2.9.91/mail/em-sync-stream.c.kill-ethread 2007-02-09 15:16:33.000000000 -0500 -+++ evolution-2.9.91/mail/em-sync-stream.c 2007-02-15 16:04:42.000000000 -0500 -@@ -268,7 +268,7 @@ +--- evolution-2.10.0/mail/em-sync-stream.c.kill-ethread 2007-02-26 04:59:59.000000000 -0500 ++++ evolution-2.10.0/mail/em-sync-stream.c 2007-03-30 15:47:31.000000000 -0400 +@@ -25,42 +25,17 @@ + #include + #endif + +-#include ++#include "em-sync-stream.h" ++ + #include +-#include ++#include + #include +-#include +-#include "em-sync-stream.h" ++#include + + #include "mail-mt.h" + +-#define LOG_STREAM +- +-#define d(x) +- + #define EMSS_CLASS(x) ((EMSyncStreamClass *)(((CamelObject *)(x))->klass)) + +-struct _EMSyncStreamPrivate { +- /* FIXME: use a single data port/gui channel for all instances */ +- /* TODO: possibly just use one of the mail-mt ports ... */ +- struct _EMsgPort *data_port, *reply_port; +- struct _GIOChannel *gui_channel; +- guint gui_watch; +- +- char *buf_data; +- int buf_used; +- int buf_size; +- +-#ifdef LOG_STREAM +- FILE *logfd; +-#endif +-}; +- +-#ifdef LOG_STREAM +-int dolog; +-#endif +- +-/* Should probably expose messages to outside world ... so subclasses can extend */ + enum _write_msg_t { + EMSS_WRITE, + EMSS_FLUSH, +@@ -68,275 +43,168 @@ + }; + + struct _write_msg { +- EMsg msg; ++ EMSyncStream *emss; ++ EFlag *processed; + + enum _write_msg_t op; + +- const char *data; +- size_t n; ++ const gchar *string; ++ gsize len; + }; + +-static void em_sync_stream_class_init (EMSyncStreamClass *klass); +-static void em_sync_stream_init (CamelObject *object); +-static void em_sync_stream_finalize (CamelObject *object); +- +-static ssize_t stream_write(CamelStream *stream, const char *buffer, size_t n); +-static int stream_close(CamelStream *stream); +-static int stream_flush(CamelStream *stream); +- + static CamelStreamClass *parent_class = NULL; + +-CamelType +-em_sync_stream_get_type (void) +-{ +- static CamelType type = CAMEL_INVALID_TYPE; +- +- if (type == CAMEL_INVALID_TYPE) { +-#ifdef LOG_STREAM +- dolog = getenv("EVOLUTION_MAIL_LOG_HTML") != NULL; +-#endif +- type = camel_type_register (CAMEL_STREAM_TYPE, +- "EMSyncStream", +- sizeof (EMSyncStream), +- sizeof (EMSyncStreamClass), +- (CamelObjectClassInitFunc) em_sync_stream_class_init, +- NULL, +- (CamelObjectInitFunc) em_sync_stream_init, +- (CamelObjectFinalizeFunc) em_sync_stream_finalize); +- } +- +- return type; +-} +- +-static void +-em_sync_stream_class_init (EMSyncStreamClass *klass) +-{ +- CamelStreamClass *stream_class = CAMEL_STREAM_CLASS (klass); +- +- parent_class = (CamelStreamClass *) CAMEL_STREAM_TYPE; +- +- /* virtual method overload */ +- stream_class->write = stream_write; +- stream_class->flush = stream_flush; +- stream_class->close = stream_close; +-} +- + static gboolean +-emcs_gui_received(GIOChannel *source, GIOCondition cond, void *data) ++emss_process_message (struct _write_msg *msg) + { +- EMSyncStream *emss = data; +- struct _EMSyncStreamPrivate *p = emss->priv; +- struct _write_msg *msg; +- +- d(printf("%p: gui sync op job waiting\n", emss)); +- +- msg = (struct _write_msg *)e_msgport_get(p->data_port); +- /* Should never happen ... */ +- if (msg == NULL) +- return TRUE; +- +- d(printf("%p: running sync op %d\n", emss, msg->op)); +- +- /* force out any pending data before doing anything else */ +- if (p->buf_used > 0) { +- EMSS_CLASS(emss)->sync_write((CamelStream *)emss, p->buf_data, p->buf_used); +-#ifdef LOG_STREAM +- if (p->logfd) +- fwrite(p->buf_data, 1, p->buf_used, p->logfd); +-#endif +- p->buf_used = 0; +- } ++ struct _EMSyncStream *emss = msg->emss; + +- /* FIXME: need to handle return values */ ++ /* Force out any pending data before doing anything else. */ ++ if (emss->buffer != NULL && emss->buffer->len > 0) { ++ EMSS_CLASS (emss)->sync_write ( ++ CAMEL_STREAM (emss), emss->buffer->str, ++ emss->buffer->len); ++ g_string_set_size (emss->buffer, 0); ++ } + + switch (msg->op) { +- case EMSS_WRITE: +- EMSS_CLASS(emss)->sync_write((CamelStream *)emss, msg->data, msg->n); +-#ifdef LOG_STREAM +- if (p->logfd) +- fwrite(msg->data, 1, msg->n, p->logfd); +-#endif +- break; +- case EMSS_FLUSH: +- EMSS_CLASS(emss)->sync_flush((CamelStream *)emss); +- break; +- case EMSS_CLOSE: +- EMSS_CLASS(emss)->sync_close((CamelStream *)emss); +-#ifdef LOG_STREAM +- if (p->logfd) { +- fclose(p->logfd); +- p->logfd = NULL; +- } +-#endif +- break; ++ case EMSS_WRITE: ++ EMSS_CLASS (emss)->sync_write ( ++ CAMEL_STREAM (emss), msg->string, msg->len); ++ break; ++ case EMSS_FLUSH: ++ EMSS_CLASS (emss)->sync_flush ( ++ CAMEL_STREAM (emss)); ++ break; ++ case EMSS_CLOSE: ++ EMSS_CLASS (emss)->sync_close ( ++ CAMEL_STREAM (emss)); ++ break; + } +- +- e_msgport_reply((EMsg *)msg); +- d(printf("%p: gui sync op jobs done\n", emss)); +- +- return TRUE; +-} +- +-static void +-em_sync_stream_init (CamelObject *object) +-{ +- EMSyncStream *emss = (EMSyncStream *)object; +- struct _EMSyncStreamPrivate *p; +- +- p = emss->priv = g_malloc0(sizeof(*p)); + +- p->data_port = e_msgport_new(); +- p->reply_port = e_msgport_new(); ++ e_flag_set (msg->processed); + +-#ifndef G_OS_WIN32 +- p->gui_channel = g_io_channel_unix_new(e_msgport_fd(p->data_port)); +-#else +- p->gui_channel = g_io_channel_win32_new_socket(e_msgport_fd(p->data_port)); +-#endif +- p->gui_watch = g_io_add_watch(p->gui_channel, G_IO_IN, emcs_gui_received, emss); +- +-#ifdef LOG_STREAM +- if (dolog) { +- char name[32]; +- static int count; +- +- sprintf(name, "sync-stream.%d.html", count++); +- printf("Saving raw data stream to '%s'\n", name); +- p->logfd = fopen(name, "w"); +- } +-#endif +- +- d(printf("%p: new emss\n", emss)); ++ return FALSE; + } + + 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) + { +- struct _EMSyncStreamPrivate *p = emss->priv; + struct _write_msg msg; +- EMsg *reply_msg; +- +- d(printf("%p: launching sync op %d\n", emss, op)); + +- /* we do everything synchronous, we should never have any locks, and +- this prevents overflow from banked up data */ +- +- msg.msg.reply_port = p->reply_port; ++ msg.processed = e_flag_new (); ++ msg.emss = emss; + msg.op = op; +- msg.data = data; +- msg.n = n; +- +- e_msgport_put(p->data_port, &msg.msg); +- reply_msg = e_msgport_wait(p->reply_port); +- g_assert(reply_msg == &msg.msg); +- +- d(printf("%p: returned sync op %d\n", emss, op)); +-} +- +-static void +-em_sync_stream_finalize (CamelObject *object) +-{ +- EMSyncStream *emss = (EMSyncStream *)object; +- struct _EMSyncStreamPrivate *p = emss->priv; +- +- /* TODO: is this stuff safe to do in another thread? */ +- g_source_remove(p->gui_watch); +- g_io_channel_unref(p->gui_channel); ++ msg.string = string; ++ msg.len = len; + +- e_msgport_destroy(p->data_port); +- e_msgport_destroy(p->reply_port); ++ camel_object_ref (emss); + +- p->data_port = NULL; +- p->reply_port = NULL; ++ g_idle_add ((GSourceFunc) emss_process_message, &msg); + +- g_free(p->buf_data); ++ e_flag_wait (msg.processed); ++ e_flag_free (msg.processed); + +-#ifdef LOG_STREAM +- if (p->logfd) +- fclose(p->logfd); +-#endif +- +- g_free(p); ++ camel_object_unref (emss); + } + +-static ssize_t +-stream_write (CamelStream *stream, const char *buffer, size_t n) ++static gssize ++emss_stream_write (CamelStream *stream, const gchar *string, gsize len) + { + EMSyncStream *emss = EM_SYNC_STREAM (stream); +- struct _EMSyncStreamPrivate *p = emss->priv; + if (emss->cancel) return -1; - if (pthread_equal(pthread_self(), mail_gui_thread)) { +- EMSS_CLASS(emss)->sync_write(stream, buffer, n); +-#ifdef LOG_STREAM +- if (p->logfd) +- fwrite(buffer, 1, n, p->logfd); +-#endif +- } else if (p->buf_size > 0) { +- size_t left = p->buf_size-p->buf_used; +- +- if (n >= left) { +- sync_op(emss, EMSS_WRITE, buffer, n); +- } else { +- memcpy(p->buf_data + p->buf_used, buffer, n); +- p->buf_used += n; +- } + if (mail_in_main_thread ()) { - EMSS_CLASS(emss)->sync_write(stream, buffer, n); - #ifdef LOG_STREAM - if (p->logfd) -@@ -298,7 +298,7 @@ ++ EMSS_CLASS (emss)->sync_write (stream, string, len); ++ } else if (emss->buffer != NULL) { ++ if (len < (emss->buffer->allocated_len - emss->buffer->len)) ++ g_string_append_len (emss->buffer, string, len); ++ else ++ emss_sync_op (emss, EMSS_WRITE, string, len); + } else { +- sync_op(emss, EMSS_WRITE, buffer, n); ++ emss_sync_op(emss, EMSS_WRITE, string, len); + } + +- return (ssize_t) n; ++ return (gssize) len; + } + + static int +-stream_flush(CamelStream *stream) ++emss_stream_flush (CamelStream *stream) + { +- EMSyncStream *emss = (EMSyncStream *)stream; ++ EMSyncStream *emss = EM_SYNC_STREAM (stream); + if (emss->cancel) return -1; - if (pthread_equal(pthread_self(), mail_gui_thread)) +- return ((EMSyncStreamClass *)(((CamelObject *)emss)->klass))->sync_flush(stream); + if (mail_in_main_thread ()) - return ((EMSyncStreamClass *)(((CamelObject *)emss)->klass))->sync_flush(stream); ++ return EMSS_CLASS (emss)->sync_flush (stream); else - sync_op(emss, EMSS_FLUSH, NULL, 0); -@@ -316,7 +316,7 @@ +- sync_op(emss, EMSS_FLUSH, NULL, 0); ++ emss_sync_op (emss, EMSS_FLUSH, NULL, 0); - d(printf("%p: closing stream\n", stream)); + return 0; + } + static int +-stream_close(CamelStream *stream) ++emss_stream_close (CamelStream *stream) + { +- EMSyncStream *emss = (EMSyncStream *)stream; ++ EMSyncStream *emss = EM_SYNC_STREAM (stream); + + if (emss->cancel) + return -1; + +- d(printf("%p: closing stream\n", stream)); +- - if (pthread_equal(pthread_self(), mail_gui_thread)) { -+ if (mail_in_main_thread ()) { - #ifdef LOG_STREAM - if (emss->priv->logfd) { - fclose(emss->priv->logfd); ---- evolution-2.9.91/mail/em-subscribe-editor.c.kill-ethread 2007-01-08 11:35:48.000000000 -0500 -+++ evolution-2.9.91/mail/em-subscribe-editor.c 2007-02-15 16:04:42.000000000 -0500 +-#ifdef LOG_STREAM +- if (emss->priv->logfd) { +- fclose(emss->priv->logfd); +- emss->priv->logfd = NULL; +- } +-#endif +- return ((EMSyncStreamClass *)(((CamelObject *)emss)->klass))->sync_close(stream); +- } else +- sync_op(emss, EMSS_CLOSE, NULL, 0); ++ if (mail_in_main_thread ()) ++ return EMSS_CLASS (emss)->sync_close (stream); ++ else ++ emss_sync_op (emss, EMSS_CLOSE, NULL, 0); + + return 0; + } + +-void +-em_sync_stream_set_buffer_size(EMSyncStream *emss, size_t size) ++static void ++em_sync_stream_class_init (EMSyncStreamClass *class) ++{ ++ CamelStreamClass *stream_class = CAMEL_STREAM_CLASS (class); ++ ++ parent_class = (CamelStreamClass *) CAMEL_STREAM_TYPE; ++ ++ stream_class->write = emss_stream_write; ++ stream_class->flush = emss_stream_flush; ++ stream_class->close = emss_stream_close; ++} ++ ++static void ++em_sync_stream_finalize (EMSyncStream *emss) ++{ ++ if (emss->buffer != NULL) ++ g_string_free (emss->buffer, TRUE); ++} ++ ++CamelType ++em_sync_stream_get_type (void) + { +- struct _EMSyncStreamPrivate *p = emss->priv; ++ static CamelType type = CAMEL_INVALID_TYPE; ++ ++ if (G_UNLIKELY (type == CAMEL_INVALID_TYPE)) ++ type = camel_type_register ( ++ CAMEL_STREAM_TYPE, ++ "EMSyncStream", ++ sizeof (EMSyncStream), ++ sizeof (EMSyncStreamClass), ++ (CamelObjectClassInitFunc) em_sync_stream_class_init, ++ NULL, ++ (CamelObjectInitFunc) NULL, ++ (CamelObjectFinalizeFunc) em_sync_stream_finalize); + +- g_free(p->buf_data); +- p->buf_data = g_malloc(size); +- p->buf_size = size; +- p->buf_used = 0; ++ return type; ++} ++ ++void ++em_sync_stream_set_buffer_size (EMSyncStream *emss, gsize size) ++{ ++ if (emss->buffer != NULL) ++ g_string_free (emss->buffer, TRUE); ++ emss->buffer = g_string_sized_new (size); + } +--- evolution-2.10.0/mail/em-subscribe-editor.c.kill-ethread 2007-01-08 11:54:43.000000000 -0500 ++++ evolution-2.10.0/mail/em-subscribe-editor.c 2007-03-30 15:47:31.000000000 -0400 @@ -229,7 +229,7 @@ next = (struct _zsubscribe_msg *)e_dlist_remhead(&m->sub->subscribe); if (next) { @@ -489,25 +965,38 @@ return id; } ---- evolution-2.9.91/mail/mail-mt.h.kill-ethread 2007-01-03 10:27:18.000000000 -0500 -+++ evolution-2.9.91/mail/mail-mt.h 2007-02-15 16:04:42.000000000 -0500 -@@ -33,6 +33,7 @@ - EMsg msg; /* parent type */ +--- evolution-2.10.0/mail/mail-mt.h.kill-ethread 2007-01-03 10:34:12.000000000 -0500 ++++ evolution-2.10.0/mail/mail-mt.h 2007-03-30 15:47:31.000000000 -0400 +@@ -25,14 +25,15 @@ + + #include + #include "camel/camel-exception.h" +-#include "libedataserver/e-msgport.h" ++#include "libedataserver/e-flag.h" + #include "camel/camel-object.h" + #include "camel/camel-operation.h" + + typedef struct _mail_msg { +- EMsg msg; /* parent type */ ++ EFlag *processed; /* optional */ struct _mail_msg_op *ops; /* operation functions */ unsigned int seq; /* seq number for synchronisation */ + gint priority; /* priority (default = 0) */ CamelOperation *cancel; /* a cancellation/status handle */ CamelException ex; /* an initialised camel exception, upto the caller to use this */ struct _mail_msg_priv *priv; /* private for internal use */ -@@ -51,6 +52,8 @@ +@@ -51,8 +52,10 @@ void mail_msg_init(void); void mail_msg_cleanup (void); +gboolean mail_in_main_thread (void); + /* allocate a new message */ - void *mail_msg_new(mail_msg_op_t *ops, EMsgPort *reply_port, size_t size); +-void *mail_msg_new(mail_msg_op_t *ops, EMsgPort *reply_port, size_t size); ++void *mail_msg_new(mail_msg_op_t *ops, EFlag *processed, size_t size); void mail_msg_free(void *msg); + void mail_msg_check_error(void *msg); + void mail_msg_cancel(unsigned int msgid); @@ -60,6 +63,14 @@ void mail_msg_wait_all(void); int mail_msg_active(unsigned int msgid); @@ -548,9 +1037,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.9.91/mail/mail-ops.h.kill-ethread 2007-01-03 10:27:18.000000000 -0500 -+++ evolution-2.9.91/mail/mail-ops.h 2007-02-15 16:04:42.000000000 -0500 -@@ -30,6 +30,8 @@ +--- evolution-2.10.0/mail/mail-ops.h.kill-ethread 2007-01-03 10:34:12.000000000 -0500 ++++ evolution-2.10.0/mail/mail-ops.h 2007-03-30 15:47:31.000000000 -0400 +@@ -30,13 +30,14 @@ #pragma } #endif /* __cplusplus */ @@ -559,7 +1048,14 @@ #include "camel/camel-store.h" #include "camel/camel-folder.h" #include "camel/camel-filter-driver.h" -@@ -55,12 +57,12 @@ + #include "camel/camel-mime-message.h" + #include "camel/camel-operation.h" + +-#include "libedataserver/e-msgport.h" + #include "libedataserver/e-account.h" + + void mail_append_mail (CamelFolder *folder, CamelMimeMessage *message, CamelMessageInfo *info, +@@ -55,12 +56,12 @@ void mail_get_message (CamelFolder *folder, const char *uid, void (*done) (CamelFolder *folder, const char *uid, CamelMimeMessage *msg, void *data), void *data, @@ -574,7 +1070,7 @@ /* get several messages */ void mail_get_messages (CamelFolder *folder, GPtrArray *uids, -@@ -70,7 +72,7 @@ +@@ -70,7 +71,7 @@ /* same for a folder */ int mail_get_folder (const char *uri, guint32 flags, void (*done) (char *uri, CamelFolder *folder, void *data), void *data, @@ -583,8 +1079,8 @@ /* and for a store */ int mail_get_store (const char *uri, CamelOperation *op, ---- evolution-2.9.91/mail/em-composer-utils.c.kill-ethread 2007-01-03 10:27:18.000000000 -0500 -+++ evolution-2.9.91/mail/em-composer-utils.c 2007-02-15 16:04:42.000000000 -0500 +--- evolution-2.10.0/mail/em-composer-utils.c.kill-ethread 2007-01-03 10:34:12.000000000 -0500 ++++ evolution-2.10.0/mail/em-composer-utils.c 2007-03-30 15:47:31.000000000 -0400 @@ -534,7 +534,7 @@ strcmp (account->drafts_folder_uri, default_drafts_folder_uri) != 0) { int id; @@ -628,8 +1124,8 @@ - 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.9.91/mail/mail-folder-cache.c.kill-ethread 2007-01-03 10:27:18.000000000 -0500 -+++ evolution-2.9.91/mail/mail-folder-cache.c 2007-02-15 16:04:42.000000000 -0500 +--- evolution-2.10.0/mail/mail-folder-cache.c.kill-ethread 2007-01-03 10:34:12.000000000 -0500 ++++ evolution-2.10.0/mail/mail-folder-cache.c 2007-03-30 15:47:31.000000000 -0400 @@ -907,7 +907,7 @@ m->store = store; camel_object_ref (store); @@ -648,9 +1144,17 @@ LOCK(info_lock); ---- evolution-2.9.91/mail/em-folder-view.c.kill-ethread 2007-02-12 01:58:01.000000000 -0500 -+++ evolution-2.9.91/mail/em-folder-view.c 2007-02-15 16:04:42.000000000 -0500 -@@ -693,7 +693,7 @@ +--- evolution-2.10.0/mail/em-folder-view.c.kill-ethread 2007-03-01 01:06:14.000000000 -0500 ++++ evolution-2.10.0/mail/em-folder-view.c 2007-03-30 15:47:31.000000000 -0400 +@@ -68,6 +68,7 @@ + #include + + #include ++#include + + #include "menus/gal-view-etable.h" + #include "menus/gal-view-factory-etable.h" +@@ -693,7 +694,7 @@ static void emfv_set_folder_uri(EMFolderView *emfv, const char *uri) { @@ -659,7 +1163,7 @@ } static void -@@ -1611,7 +1611,7 @@ +@@ -1613,7 +1614,7 @@ data->type = type; data->source = source; @@ -668,7 +1172,7 @@ } static void -@@ -1709,7 +1709,7 @@ +@@ -1711,7 +1712,7 @@ data->type = type; data->uri = g_strdup (uri); @@ -677,7 +1181,7 @@ } static void -@@ -2369,7 +2369,7 @@ +@@ -2370,7 +2371,7 @@ 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); @@ -686,18 +1190,51 @@ } else { e_profile_event_emit("goto.empty", "", 0); g_free(emfv->priv->selected_uid); ---- evolution-2.9.91/mail/mail-session.c.kill-ethread 2007-02-15 16:04:42.000000000 -0500 -+++ evolution-2.9.91/mail/mail-session.c 2007-02-15 16:04:42.000000000 -0500 -@@ -374,7 +374,7 @@ +--- evolution-2.10.0/mail/mail-session.c.kill-ethread 2007-02-26 04:59:59.000000000 -0500 ++++ evolution-2.10.0/mail/mail-session.c 2007-03-30 15:47:31.000000000 -0400 +@@ -35,7 +35,7 @@ + #include + + #include +-#include ++#include + + #include /* FIXME: this is where camel_init is defined, it shouldn't include everything else */ + #include +@@ -283,7 +283,7 @@ + /* if !allow_cancel, then we've already replied */ + if (m->allow_cancel) { + m->result = button == GTK_RESPONSE_OK; +- e_msgport_reply((EMsg *)m); ++ e_flag_set (m->msg.processed); + } + + /* check for pendings */ +@@ -364,17 +364,18 @@ + alert_user(CamelSession *session, CamelSessionAlertType type, const char *prompt, gboolean cancel) + { + MailSession *mail_session = MAIL_SESSION (session); +- struct _user_message_msg *m, *r; +- EMsgPort *user_message_reply = NULL; ++ struct _user_message_msg *m; ++ EFlag *processed = NULL; + gboolean ret; + + if (!mail_session->interactive) + return FALSE; + if (cancel) - user_message_reply = e_msgport_new (); - m = mail_msg_new (&user_message_op, user_message_reply, sizeof (*m)); +- user_message_reply = e_msgport_new (); +- m = mail_msg_new (&user_message_op, user_message_reply, sizeof (*m)); - m->ismain = pthread_equal(pthread_self(), mail_gui_thread); ++ processed = e_flag_new (); ++ ++ m = mail_msg_new (&user_message_op, processed, sizeof (*m)); + m->ismain = mail_in_main_thread(); m->type = type; m->prompt = g_strdup(prompt); m->allow_cancel = cancel; -@@ -382,9 +382,7 @@ +@@ -382,18 +383,14 @@ if (m->ismain) do_user_message((struct _mail_msg *)m); else { @@ -708,9 +1245,37 @@ } if (cancel) { ---- evolution-2.9.91/mail/mail-mt.c.kill-ethread 2007-01-03 10:27:18.000000000 -0500 -+++ evolution-2.9.91/mail/mail-mt.c 2007-02-15 16:28:12.000000000 -0500 -@@ -82,12 +82,8 @@ +- r = (struct _user_message_msg *)e_msgport_wait(user_message_reply); +- g_assert(m == r); +- ++ e_flag_wait (processed); + ret = m->result; + mail_msg_free(m); +- e_msgport_destroy(user_message_reply); ++ e_flag_free (processed); + } else + ret = TRUE; + +@@ -686,7 +683,7 @@ + /* flush/cancel pending user messages */ + while ((um = (struct _user_message_msg *) e_dlist_remhead (&message_list))) { + d(printf ("Flusing message request: %s\n", um->prompt)); +- e_msgport_reply((EMsg *) um); ++ e_flag_set (um->msg.processed); + } + + /* and the current */ +--- evolution-2.10.0/mail/mail-mt.c.kill-ethread 2007-01-03 10:34:12.000000000 -0500 ++++ evolution-2.10.0/mail/mail-mt.c 2007-03-30 15:47:31.000000000 -0400 +@@ -29,7 +29,6 @@ + #include + #include + +-#include + #include + + #include +@@ -82,13 +81,9 @@ static pthread_mutex_t mail_msg_lock = PTHREAD_MUTEX_INITIALIZER; static pthread_cond_t mail_msg_cond = PTHREAD_COND_INITIALIZER; @@ -720,10 +1285,12 @@ -static void mail_msg_destroy(EThread *e, EMsg *msg, void *data); - - void *mail_msg_new(mail_msg_op_t *ops, EMsgPort *reply_port, size_t size) +-void *mail_msg_new(mail_msg_op_t *ops, EMsgPort *reply_port, size_t size) ++void *mail_msg_new(mail_msg_op_t *ops, EFlag *processed, size_t size) { struct _mail_msg *msg; -@@ -112,7 +108,6 @@ + +@@ -112,7 +107,6 @@ fprintf(log, "Logging async operations\n"); if (log_locks) { @@ -731,7 +1298,18 @@ fprintf(log, "%" G_GINT64_MODIFIER "x: lock mail_msg_lock\n", e_util_pthread_id(pthread_self())); } } else { -@@ -308,9 +303,8 @@ +@@ -123,9 +117,9 @@ + } + #endif + msg = g_malloc0(size); ++ msg->processed = processed; /* owned by caller */ + msg->ops = ops; + msg->seq = mail_msg_seq++; +- msg->msg.reply_port = reply_port; + 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)); +@@ -308,9 +302,8 @@ void mail_msg_wait(unsigned int msgid) { struct _mail_msg *m; @@ -742,7 +1320,7 @@ MAIL_MT_LOCK(mail_msg_lock); m = g_hash_table_lookup(mail_msg_active_table, GINT_TO_POINTER(msgid)); while (m) { -@@ -347,9 +341,7 @@ +@@ -347,9 +340,7 @@ void mail_msg_wait_all(void) { @@ -753,7 +1331,7 @@ MAIL_MT_LOCK(mail_msg_lock); while (g_hash_table_size(mail_msg_active_table) > 0) { MAIL_MT_UNLOCK(mail_msg_lock); -@@ -420,241 +412,193 @@ +@@ -420,241 +411,193 @@ MAIL_MT_UNLOCK(mail_msg_lock); } @@ -829,11 +1407,11 @@ + /* check the main loop queue */ + while ((msg = g_async_queue_try_pop (main_loop_queue)) != NULL) { + -+ /* If the message has a reply_port, it must also have a -+ * receive_msg() callback. The receive_msg() callback is -+ * responsible for issuing the reply, and the recipient of -+ * the reply is responsible for freeing the message. */ -+ if (msg->msg.reply_port != NULL) { ++ /* If the message has a "processed" EFlag, it must also have ++ * a receive_msg() callback. The receive_msg() callback is ++ * responsible for setting the EFlag, and thread blocked on ++ * the EFlag is reponsible for freeing it. */ ++ if (msg->processed != NULL) { + g_assert (msg->ops->receive_msg != NULL); + msg->ops->receive_msg (msg); + } else { @@ -1131,7 +1709,7 @@ } /* ********************************************************************** */ -@@ -723,7 +667,6 @@ +@@ -723,7 +666,6 @@ { struct _proxy_msg *m; int id; @@ -1139,7 +1717,7 @@ /* we dont have a reply port for this, we dont care when/if it gets executed, just queue it */ m = mail_msg_new(&async_event_op, NULL, sizeof(*m)); -@@ -743,12 +686,12 @@ +@@ -743,12 +685,12 @@ /* 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) { @@ -1155,41 +1733,49 @@ return id; } -@@ -842,6 +785,9 @@ +@@ -842,6 +784,9 @@ m->ret = m->func(p1, p2, i1, p3, p4, p5); break; } + -+ if (mm->msg.reply_port != NULL) -+ e_msgport_reply ((EMsg *) mm); ++ if (mm->processed != NULL) ++ e_flag_set (mm->processed); } static struct _mail_msg_op mail_call_op = { -@@ -857,11 +803,10 @@ +@@ -856,23 +801,22 @@ + struct _call_msg *m; void *ret; va_list ap; - EMsgPort *reply = NULL; +- EMsgPort *reply = NULL; - int ismain = pthread_equal(pthread_self(), mail_gui_thread); ++ EFlag *processed = NULL; va_start(ap, func); - if (!ismain) +- reply = e_msgport_new(); + if (!mail_in_main_thread ()) - reply = e_msgport_new(); ++ processed = e_flag_new (); - m = mail_msg_new(&mail_call_op, reply, sizeof(*m)); -@@ -869,8 +814,8 @@ +- m = mail_msg_new(&mail_call_op, reply, sizeof(*m)); ++ m = mail_msg_new(&mail_call_op, processed, sizeof(*m)); + m->type = type; m->func = func; G_VA_COPY(m->ap, ap); - if (!ismain) { - e_msgport_put(mail_gui_port, (EMsg *)m); -+ if (reply != NULL) { +- e_msgport_wait(reply); +- e_msgport_destroy(reply); ++ if (processed != NULL) { + mail_msg_main_loop_push((mail_msg_t *) m); - e_msgport_wait(reply); - e_msgport_destroy(reply); ++ e_flag_wait (processed); ++ e_flag_free (processed); } else { -@@ -909,7 +854,7 @@ + do_call(&m->msg); + } +@@ -909,7 +853,7 @@ busy_state++; if (busy_state == 1) { m = mail_msg_new(&set_busy_op, NULL, sizeof(*m)); @@ -1198,7 +1784,7 @@ } MAIL_MT_UNLOCK(status_lock); } -@@ -922,7 +867,7 @@ +@@ -922,7 +866,7 @@ busy_state--; if (busy_state == 0) { m = mail_msg_new(&set_busy_op, NULL, sizeof(*m)); @@ -1207,7 +1793,7 @@ } MAIL_MT_UNLOCK(status_lock); } -@@ -947,7 +892,7 @@ +@@ -947,7 +891,7 @@ char *out, *p, *o, c; int pc; @@ -1216,7 +1802,7 @@ MAIL_MT_LOCK (mail_msg_lock); -@@ -1055,7 +1000,7 @@ +@@ -1055,7 +999,7 @@ } m->pc = pc; m->data = data; @@ -1225,8 +1811,8 @@ } /* ******************** */ ---- evolution-2.9.91/plugins/folder-unsubscribe/folder-unsubscribe.c.kill-ethread 2007-01-03 10:27:06.000000000 -0500 -+++ evolution-2.9.91/plugins/folder-unsubscribe/folder-unsubscribe.c 2007-02-15 16:04:42.000000000 -0500 +--- evolution-2.10.0/plugins/folder-unsubscribe/folder-unsubscribe.c.kill-ethread 2007-01-03 10:34:02.000000000 -0500 ++++ evolution-2.10.0/plugins/folder-unsubscribe/folder-unsubscribe.c 2007-03-30 15:47:31.000000000 -0400 @@ -108,5 +108,5 @@ unsub = mail_msg_new (&unsubscribe_op, NULL, sizeof (struct _folder_unsub_t)); unsub->uri = g_strdup (target->uri); @@ -1234,8 +1820,8 @@ - e_thread_put (mail_thread_new, (EMsg *) unsub); + mail_msg_unordered_push ((mail_msg_t *) unsub); } ---- evolution-2.9.91/plugins/mark-all-read/mark-all-read.c.kill-ethread 2007-01-03 10:27:08.000000000 -0500 -+++ evolution-2.9.91/plugins/mark-all-read/mark-all-read.c 2007-02-15 16:04:42.000000000 -0500 +--- evolution-2.10.0/plugins/mark-all-read/mark-all-read.c.kill-ethread 2007-01-03 10:34:03.000000000 -0500 ++++ evolution-2.10.0/plugins/mark-all-read/mark-all-read.c 2007-03-30 15:47:31.000000000 -0400 @@ -44,7 +44,7 @@ return; } @@ -1245,8 +1831,8 @@ } static void ---- evolution-2.9.91/plugins/exchange-operations/exchange-folder.c.kill-ethread 2007-01-03 10:27:08.000000000 -0500 -+++ evolution-2.9.91/plugins/exchange-operations/exchange-folder.c 2007-02-15 16:04:42.000000000 -0500 +--- evolution-2.10.0/plugins/exchange-operations/exchange-folder.c.kill-ethread 2007-01-03 10:34:03.000000000 -0500 ++++ evolution-2.10.0/plugins/exchange-operations/exchange-folder.c 2007-03-30 15:47:31.000000000 -0400 @@ -134,7 +134,7 @@ inbox_physical_uri = e_folder_get_physical_uri (inbox); @@ -1256,8 +1842,8 @@ } ---- evolution-2.9.91/plugins/save-attachments/save-attachments.c.kill-ethread 2007-02-09 15:16:33.000000000 -0500 -+++ evolution-2.9.91/plugins/save-attachments/save-attachments.c 2007-02-15 16:04:42.000000000 -0500 +--- evolution-2.10.0/plugins/save-attachments/save-attachments.c.kill-ethread 2007-02-26 04:59:58.000000000 -0500 ++++ evolution-2.10.0/plugins/save-attachments/save-attachments.c 2007-03-30 15:47:31.000000000 -0400 @@ -407,5 +407,5 @@ camel_object_ref(data->folder); data->uid = g_strdup(target->uids->pdata[0]); @@ -1265,8 +1851,8 @@ - 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.9.91/plugins/mailing-list-actions/mailing-list-actions.c.kill-ethread 2007-01-03 10:27:09.000000000 -0500 -+++ evolution-2.9.91/plugins/mailing-list-actions/mailing-list-actions.c 2007-02-15 16:04:42.000000000 -0500 +--- evolution-2.10.0/plugins/mailing-list-actions/mailing-list-actions.c.kill-ethread 2007-01-03 10:34:04.000000000 -0500 ++++ evolution-2.10.0/plugins/mailing-list-actions/mailing-list-actions.c 2007-03-30 15:47:31.000000000 -0400 @@ -89,7 +89,7 @@ data->uri = strdup (sel->uri); @@ -1276,8 +1862,8 @@ } void emla_list_action_do (CamelFolder *folder, const char *uid, CamelMimeMessage *msg, void *data) ---- evolution-2.9.91/plugins/groupwise-features/share-folder-common.c.kill-ethread 2007-01-03 10:27:07.000000000 -0500 -+++ evolution-2.9.91/plugins/groupwise-features/share-folder-common.c 2007-02-15 16:04:42.000000000 -0500 +--- evolution-2.10.0/plugins/groupwise-features/share-folder-common.c.kill-ethread 2007-01-03 10:34:02.000000000 -0500 ++++ evolution-2.10.0/plugins/groupwise-features/share-folder-common.c 2007-03-30 15:47:31.000000000 -0400 @@ -239,7 +239,7 @@ m->done = done; g_free (namebuf); @@ -1287,8 +1873,8 @@ return id; } ---- evolution-2.9.91/calendar/gui/alarm-notify/alarm-notify.h.kill-ethread 2007-01-03 10:27:57.000000000 -0500 -+++ evolution-2.9.91/calendar/gui/alarm-notify/alarm-notify.h 2007-02-15 16:04:42.000000000 -0500 +--- evolution-2.10.0/calendar/gui/alarm-notify/alarm-notify.h.kill-ethread 2007-01-03 10:34:50.000000000 -0500 ++++ evolution-2.10.0/calendar/gui/alarm-notify/alarm-notify.h 2007-03-30 15:47:31.000000000 -0400 @@ -39,19 +39,6 @@ typedef struct _AlarmNotifyPrivate AlarmNotifyPrivate; @@ -1309,8 +1895,8 @@ struct _AlarmNotify { BonoboObject object; ---- evolution-2.9.91/calendar/gui/alarm-notify/alarm-notify.c.kill-ethread 2007-01-03 10:27:57.000000000 -0500 -+++ evolution-2.9.91/calendar/gui/alarm-notify/alarm-notify.c 2007-02-15 16:04:42.000000000 -0500 +--- evolution-2.10.0/calendar/gui/alarm-notify/alarm-notify.c.kill-ethread 2007-01-03 10:34:50.000000000 -0500 ++++ evolution-2.10.0/calendar/gui/alarm-notify/alarm-notify.c 2007-03-30 15:47:31.000000000 -0400 @@ -45,10 +45,6 @@ GMutex *mutex; }; @@ -1423,8 +2009,8 @@ } static void ---- evolution-2.9.91/calendar/gui/alarm-notify/alarm-queue.c.kill-ethread 2007-01-03 10:27:57.000000000 -0500 -+++ evolution-2.9.91/calendar/gui/alarm-notify/alarm-queue.c 2007-02-15 16:04:42.000000000 -0500 +--- evolution-2.10.0/calendar/gui/alarm-notify/alarm-queue.c.kill-ethread 2007-01-03 10:34:50.000000000 -0500 ++++ evolution-2.10.0/calendar/gui/alarm-notify/alarm-queue.c 2007-03-30 15:47:31.000000000 -0400 @@ -115,9 +115,6 @@ static int tray_blink_state = FALSE; static AlarmNotify *an; diff --git a/evolution.spec b/evolution.spec index f6d1db1..a844016 100644 --- a/evolution.spec +++ b/evolution.spec @@ -47,7 +47,7 @@ Name: evolution Version: 2.10.0 -Release: 5%{?dist} +Release: 6%{?dist} License: GPL Group: Applications/Productivity Summary: GNOME's next-generation groupware suite @@ -729,6 +729,9 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/evolution/%{evo_major}/libmenus.so %changelog +* Fri Mar 30 2007 Matthew Barnes - 2.10.0-6.fc7 +- Revise patch for GNOME bug #362638 (deprecate EThread). + * Thu Mar 29 2007 Matthew Barnes - 2.10.0-5.fc7 - CVE-2007-1002 (Shared memo categories format string vulnerability) - Add -Wdeclaration-after-statement to strict build settings.