From 1fa80ef1b7e6de2c0653b68f60986ae4150d2780 Mon Sep 17 00:00:00 2001 From: Peter Williams Date: Fri, 11 Aug 2000 17:35:14 +0000 Subject: Fix the camel-folder's thaw handler. Implement event forwarding into the main thread. svn path=/trunk/; revision=4744 --- mail/mail-threads.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'mail/mail-threads.c') diff --git a/mail/mail-threads.c b/mail/mail-threads.c index bdfa7b260f..7bd98a6912 100644 --- a/mail/mail-threads.c +++ b/mail/mail-threads.c @@ -26,6 +26,7 @@ #include #include +#include "camel/camel-object.h" #include "mail.h" #include "mail-threads.h" @@ -68,6 +69,7 @@ typedef struct com_msg_s MESSAGE, PASSWORD, ERROR, + FORWARD_EVENT, FINISHED } type; gfloat percentage; @@ -79,6 +81,12 @@ typedef struct com_msg_s gchar **reply; gboolean secret; gboolean *success; + + /* Event stuff */ + CamelObjectEventHookFunc event_hook; + CamelObject *event_obj; + gpointer event_event_data; + gpointer event_user_data; } com_msg_t; @@ -483,6 +491,25 @@ mail_op_error (gchar * fmt, ...) G_UNLOCK (modal_lock); } +/** + * mail_op_forward_event: + * + * Communicate a camel event over to the main thread. + **/ + +void +mail_op_forward_event (CamelObjectEventHookFunc func, CamelObject *o, + gpointer event_data, gpointer user_data) +{ + com_msg_t msg; + + msg.type = FORWARD_EVENT; + msg.event_hook = func; + msg.event_obj = o; + msg.event_event_data = event_data; + msg.event_user_data = user_data; + write (MAIN_WRITER, &msg, sizeof (msg)); +} /** * mail_operation_wait_for_finish: * @@ -887,6 +914,13 @@ read_msg (GIOChannel * source, GIOCondition condition, gpointer userdata) * call for us */ + case FORWARD_EVENT: + DEBUG (("*** Message -- FORWARD_EVENT %p", msg->event_hook)); + + g_assert (msg->event_hook); + (msg->event_hook) (msg->event_obj, msg->event_event_data, msg->event_user_data); + break; + case FINISHED: DEBUG ( ("*** Message -- FINISH %s\n", -- cgit v1.2.3