diff options
author | Michael Zucci <zucchi@src.gnome.org> | 2001-10-17 03:13:31 +0800 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2001-10-17 03:13:31 +0800 |
commit | 8c85ed61ba64bd548460543dd87445b9a21dbf6a (patch) | |
tree | 76d2bc77eb83263b4d5b4122bf47127a1666214b /mail/mail-session.c | |
parent | e1d0f3dc45692a04dbd93c7ef82c24af74e05f25 (diff) | |
download | gsoc2013-evolution-8c85ed61ba64bd548460543dd87445b9a21dbf6a.tar.gz gsoc2013-evolution-8c85ed61ba64bd548460543dd87445b9a21dbf6a.tar.zst gsoc2013-evolution-8c85ed61ba64bd548460543dd87445b9a21dbf6a.zip |
Added an async_event handler to store_info. (mail_note_store): Setup async
* mail-folder-cache.c: Added an async_event handler to store_info.
(mail_note_store): Setup async event handler here.
(store_finalised): Flush out async events here.
(folder_changed): Use async event handler to emit event.
(mail_note_folder): Chagned, do most of the work in the calling
context, only do the corba stuff in main.
(store_folder_subscribed): Use async event, and do more work locally.
(store_folder_unsubscribed): Same.
(store_folder_deleted): Call store_folder_unsubscribed if we have
to do any work.
(store_folder_created): Call store_folder_subscribed if we have to
do any work.
(store_folder_unsubscribed): Ref store while busy.
(real_folder_deleted): And unref here.
(store_folder_subscribed): Reg store while busy.
(real_folder_created): Unref here.
(mail_note_folder): Ref folder while busy.
(real_note_folder): And unref here.
(mail_note_folder): Hook onto folder_deleted event.
(folder_deleted): Just mark this folder as no longer available.
* mail-session.c (register_timeout): Use mail_call_main instead of
proxy_event.
(remove_timeout): Same here.
* folder-browser.c (folder_changed): use the new mail_async_event
stuff.
(folder_changed_main): Remove old async event handling stuff.
(FOLDER_BROWSER_LOCK/UNLOCK): Removed.
(FolderBrowserPrivate): Removed too, sigh.
* mail-mt.c (mail_async_event_new, mail_async_event_emit,
mail_async_event_destroy): New functions to handle async events.
(mail_proxy_event, mail_proxy_event_id): Removed old functions for
async events.
(do_call): Add suport for MAIL_CALL_p_pp.
(mail_msg_free): Use mail_async_event instead of proxy_event.
* message-list.c (message_changed): Promote the message_changed to
a folder_changed and use main_folder_changed to process it.
(main_message_changed): Remove.d
(message_list_init): Setup async event handler.
(message_list_destroy): Remove async handler.
(folder_changed): Use async hanler to emit event in main loop.
(message_changed): Same.
svn path=/trunk/; revision=13698
Diffstat (limited to 'mail/mail-session.c')
-rw-r--r-- | mail/mail-session.c | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/mail/mail-session.c b/mail/mail-session.c index bf8d5560c3..0101845f74 100644 --- a/mail/mail-session.c +++ b/mail/mail-session.c @@ -271,19 +271,11 @@ camel_timeout (gpointer data) } static void -do_register_timeout(CamelObject *o, void *edata, void *data) +main_register_timeout(struct _timeout_data *td) { - struct _timeout_data *td = (struct _timeout_data *)edata; - td->result = gtk_timeout_add_full(td->interval, camel_timeout, NULL, td, g_free); } -static void -do_remove_timeout(CamelObject *o, void *edata, void *data) -{ - gtk_timeout_remove(*((int *)edata)); -} - static guint register_timeout (CamelSession *session, guint32 interval, CamelTimeoutCallback cb, gpointer camel_data) { @@ -298,7 +290,7 @@ register_timeout (CamelSession *session, guint32 interval, CamelTimeoutCallback g_warning("Timeout %u too small, increased to 1000", interval); interval = 1000; } - + /* This is extremely messy, we need to proxy to gtk thread for this */ td = g_malloc (sizeof (*td)); td->interval = interval; @@ -306,7 +298,7 @@ register_timeout (CamelSession *session, guint32 interval, CamelTimeoutCallback td->cb = cb; td->camel_data = camel_data; - mail_msg_wait(mail_proxy_event(do_register_timeout, (CamelObject *)session, td, NULL)); + mail_call_main(MAIL_CALL_p_p, (MailMainFunc)main_register_timeout, td); if (td->result == 0) { g_free(td); @@ -316,10 +308,16 @@ register_timeout (CamelSession *session, guint32 interval, CamelTimeoutCallback return td->result; } +static void +main_remove_timeout(guint *edata) +{ + gtk_timeout_remove(*edata); +} + static gboolean remove_timeout (CamelSession *session, guint handle) { - mail_msg_wait(mail_proxy_event(do_remove_timeout, (CamelObject *)session, &handle, NULL)); + mail_call_main(MAIL_CALL_p_p, (MailMainFunc)main_remove_timeout, &handle); return TRUE; } |