diff options
author | Srinivasa Ragavan <sragavan@novell.com> | 2009-07-24 02:48:45 +0800 |
---|---|---|
committer | Srinivasa Ragavan <sragavan@novell.com> | 2009-07-24 02:53:03 +0800 |
commit | e502c83e159afd3df74c8ff20cf21e56bfb1a242 (patch) | |
tree | 1f4406eb038c4aacea7f5a195285d254c3ad6197 /mail | |
parent | f69c15d69d634a3fb857cc062f91e31055a95863 (diff) | |
download | gsoc2013-evolution-e502c83e159afd3df74c8ff20cf21e56bfb1a242.tar.gz gsoc2013-evolution-e502c83e159afd3df74c8ff20cf21e56bfb1a242.tar.zst gsoc2013-evolution-e502c83e159afd3df74c8ff20cf21e56bfb1a242.zip |
Unref idle loops in finalize.
Diffstat (limited to 'mail')
-rw-r--r-- | mail/em-sync-stream.c | 11 | ||||
-rw-r--r-- | mail/em-sync-stream.h | 1 |
2 files changed, 10 insertions, 2 deletions
diff --git a/mail/em-sync-stream.c b/mail/em-sync-stream.c index 7e93b33dde..8c7d266855 100644 --- a/mail/em-sync-stream.c +++ b/mail/em-sync-stream.c @@ -89,6 +89,7 @@ emss_process_message (struct _write_msg *msg) break; } + emss->idle_id = 0; e_flag_set (msg->done); return FALSE; @@ -107,8 +108,10 @@ emss_sync_op (EMSyncStream *emss, enum _write_msg_t op, msg.len = len; camel_object_ref (emss); - - g_idle_add ((GSourceFunc) emss_process_message, &msg); + + if (emss->idle_id) + g_source_remove (emss->idle_id); + emss->idle_id = g_idle_add ((GSourceFunc) emss_process_message, &msg); e_flag_wait (msg.done); e_flag_free (msg.done); @@ -162,6 +165,8 @@ emss_stream_close (CamelStream *stream) if (emss->cancel) return -1; + emss->idle_id = 0; + if (mail_in_main_thread ()) return EMSS_CLASS (emss)->sync_close (stream); else @@ -187,6 +192,8 @@ em_sync_stream_finalize (EMSyncStream *emss) { if (emss->buffer != NULL) g_string_free (emss->buffer, TRUE); + if (emss->idle_id) + g_source_remove (emss->idle_id); } CamelType diff --git a/mail/em-sync-stream.h b/mail/em-sync-stream.h index 16cdc272d1..3d74a02a35 100644 --- a/mail/em-sync-stream.h +++ b/mail/em-sync-stream.h @@ -53,6 +53,7 @@ struct _EMSyncStream { CamelStream parent; GString *buffer; gboolean cancel; + guint idle_id; }; struct _EMSyncStreamClass { |