Hope this fixes it.
-Srini On Thu, 2005-07-28 at 16:53 +0800, Not Zed wrote: > Srini, > > Your attachment patch has busted the threading in the mail display. The > UI can now lock for extended periods because it is doing camel > operations from the main thread. > > This particular bit of code is at least one place where it is - and to > be honest, i'm completely baffled by it. You're copying a whole part > into memory just to copy the part. Thats what references are for. > > Of course, I never got a chance to review this code since you just > committed it anyway, which was completely inappropriate to start with. > > Fix it. > > > EAttachment * > e_attachment_new_from_mime_part (CamelMimePart *part) > { > EAttachment *new; > CamelMimePart *mime_part; > CamelStream *stream; > > g_return_val_if_fail (CAMEL_IS_MIME_PART (part), NULL); > > stream = camel_stream_mem_new (); > if (camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (part), > stream) == -1) { > camel_object_unref (stream); > return NULL; > } > > camel_stream_reset (stream); > mime_part = camel_mime_part_new (); > > if (camel_data_wrapper_construct_from_stream (CAMEL_DATA_WRAPPER > (mime_part), stream) == -1) { > camel_object_unref (mime_part); > camel_object_unref (stream); > return NULL; > } > > camel_object_unref (stream); > > _______________________________________________ > evolution-hackers maillist - evolution-hackers@lists.ximian.com > http://lists.ximian.com/mailman/listinfo/evolution-hackers
Index: e-attachment.c =================================================================== RCS file: /cvs/gnome/evolution/widgets/misc/e-attachment.c,v retrieving revision 1.2 diff -u -p -r1.2 e-attachment.c --- e-attachment.c 20 Jul 2005 11:17:42 -0000 1.2 +++ e-attachment.c 28 Jul 2005 09:48:48 -0000 @@ -505,31 +505,13 @@ EAttachment * e_attachment_new_from_mime_part (CamelMimePart *part) { EAttachment *new; - CamelMimePart *mime_part; - CamelStream *stream; g_return_val_if_fail (CAMEL_IS_MIME_PART (part), NULL); - stream = camel_stream_mem_new (); - if (camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (part), stream) == -1) { - camel_object_unref (stream); - return NULL; - } - - camel_stream_reset (stream); - mime_part = camel_mime_part_new (); - - if (camel_data_wrapper_construct_from_stream (CAMEL_DATA_WRAPPER (mime_part), stream) == -1) { - camel_object_unref (mime_part); - camel_object_unref (stream); - return NULL; - } - - camel_object_unref (stream); - new = g_object_new (E_TYPE_ATTACHMENT, NULL); new->editor_gui = NULL; - new->body = mime_part; + camel_object_ref (part); + new->body = part; new->guessed_type = FALSE; new->is_available_local = TRUE; new->size = 0;
_______________________________________________ evolution-hackers maillist - evolution-hackers@lists.ximian.com http://lists.ximian.com/mailman/listinfo/evolution-hackers