diff options
author | Not Zed <NotZed@Ximian.com> | 2001-03-17 12:56:54 +0800 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2001-03-17 12:56:54 +0800 |
commit | fcb4ed5a4f851aabae47aa5c376253246c3f216c (patch) | |
tree | 9fd83df35417be61fc6c155db7488081a27d1c14 /mail/mail-mt.c | |
parent | a570bb037f3fd6b15e1e3d16a04827b6243ff85f (diff) | |
download | gsoc2013-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.c | 10 |
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) |