[evolution-patches] Re: [Evolution-hackers] broken threading in mail-display
- From: Srinivasa Ragavan <sragavan novell com>
- To: Not Zed <notzed ximian com>
- Cc: evolution-patches lists ximian com, evolution-hackers lists ximian com
- Subject: [evolution-patches] Re: [Evolution-hackers] broken threading in mail-display
- Date: Thu, 28 Jul 2005 15:42:07 +0530
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;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]