aboutsummaryrefslogtreecommitdiffstats
path: root/mail/mail-mt.c
diff options
context:
space:
mode:
authorNot Zed <NotZed@Ximian.com>2001-03-17 12:56:54 +0800
committerMichael Zucci <zucchi@src.gnome.org>2001-03-17 12:56:54 +0800
commitfcb4ed5a4f851aabae47aa5c376253246c3f216c (patch)
tree9fd83df35417be61fc6c155db7488081a27d1c14 /mail/mail-mt.c
parenta570bb037f3fd6b15e1e3d16a04827b6243ff85f (diff)
downloadgsoc2013-evolution-fcb4ed5a4f851aabae47aa5c376253246c3f216c.tar.gz
gsoc2013-evolution-fcb4ed5a4f851aabae47aa5c376253246c3f216c.tar.zst
gsoc2013-evolution-fcb4ed5a4f851aabae47aa5c376253246c3f216c.zip
Move the proxy event outside the lock (otherwise we always deadlock).
2001-03-17 Not Zed <NotZed@Ximian.com> * mail-mt.c (mail_msg_free): Move the proxy event outside the lock (otherwise we always deadlock). * mail-local.c (reconfigure_clicked): Clear the message list during update inside the folder thingy. This is a hell mess, need to move the gui stuff to mail-callbacks and make this reconfigure thing a more generic func. * message-list.c (ml_value_to_string): Cleanup the logic to use lookup tables. (sort_uid_to_rows): Removed due to rewrite below. (build_flat_diff): Changes for node/summary/etc changes. Also do changed nodes too. (clear_tree): Free the info reference for nodes in our hashtable. (build_subtree): Ref the info reference in our hash/tree node. (on_click): Dont free message info, since we just got our ref to it. (remove_node_diff): Free messageinfo off node. (build_flat): Ref messageinfo. (message_list_set_folder): Allow a NULL folder to be set - i.e. clear the view. (message_list_set_folder): Emit a no message sleeted signal. (build_tree): Change cursor keeping stuff to work with new info. Turned off BROKEN_ETREE - well maybe it'll work. Check for duplicate messages displayed, etc. 2001-03-16 Not Zed <NotZed@Ximian.com> * message-list.h: Added uid_nodemap; mapping of uid's to e-tree nodes. * message-list.c (build_flat): Changed to take a summary argument, and to store node in node map, etc, and store info's in e-tree. (build_subtree): Changed to store node in node map, and to store info's in tree directly. (ml_tree_value_at): Changed to get info directly from tree node, removed allocated return value logic. (ml_tree_value_at): Removed all "fake node" handling, no fake nodes should ever exist. (id_is_uid, id_is_subject, id_uid, id_subject): Removed macro's no longer used. (new_id_from_uid, new_id_from_subject): Removed no longer used. (get_message_uid): (get_message_info): Treat tree node data as messageinfo. (message_list_select): Dont free the messageinfo, as its part of our data, not retrieved from folder. (message_list_drag_data_get): ditto. (subtree_unread): Treat tree node data as messageinfo. (subtree_size): ditto. (subtree_earliest): ditto. (clear_tree): Reset uid_nodemap on clear. (save_node_state): tree nodes == messageinfo's. (add_node_diff): ditto. (remove_node_diff): ditto. (main_folder_changed): use uid_nodemap to lookup changed nodes. (main_message_changed): ditto. svn path=/trunk/; revision=8775
Diffstat (limited to 'mail/mail-mt.c')
-rw-r--r--mail/mail-mt.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/mail/mail-mt.c b/mail/mail-mt.c
index d450d4d1b1..60fbfaffc0 100644
--- a/mail/mail-mt.c
+++ b/mail/mail-mt.c
@@ -113,6 +113,7 @@ checkmem(void *p)
void mail_msg_free(void *msg)
{
struct _mail_msg *m = msg;
+ void *bar = NULL, *label = NULL;
#ifdef MALLOC_CHECK
checkmem(m);
@@ -132,13 +133,13 @@ void mail_msg_free(void *msg)
/* this closes the bar, and/or the whole progress dialogue, once we're out of things to do */
if (g_hash_table_size(mail_msg_active) == 0) {
if (progress_dialogue != NULL) {
- void *data = progress_dialogue;
+ bar = progress_dialogue;
progress_dialogue = NULL;
progress_row = 0;
- mail_proxy_event(destroy_widgets, NULL, data, NULL);
}
} else if (m->priv->bar) {
- mail_proxy_event(destroy_widgets, NULL, m->priv->bar, m->priv->label);
+ bar = m->priv->bar;
+ label = m->priv->label;
}
if (m->priv->timeout_id > 0)
@@ -151,6 +152,9 @@ void mail_msg_free(void *msg)
g_free(m->priv->what);
g_free(m->priv);
g_free(m);
+
+ if (bar || label)
+ mail_proxy_event(destroy_widgets, NULL, bar, label);
}
void mail_msg_check_error(void *msg)