This comment (camel/camel-private.h:124) does not agree with the code:
GMutex *ref_lock; /* for reffing/unreffing messageinfo's ALWAYS obtain
before summary_lock */
>From camel/camel-folder-summary.c:
CamelMessageInfo *
camel_folder_summary_index(CamelFolderSummary *s, int i)
{
CamelMessageInfo *info = NULL;
CAMEL_SUMMARY_LOCK(s, summary_lock);
CAMEL_SUMMARY_LOCK(s, ref_lock);
if (i<s->messages->len)
info = g_ptr_array_index(s->messages, i);
if (info)
info->refcount++;
CAMEL_SUMMARY_UNLOCK(s, ref_lock);
CAMEL_SUMMARY_UNLOCK(s, summary_lock);
return info;
}
Which is correct, the comment or the code? If I switch the locking
order around it works fine.
My profiling indicates there's some lock contention going on in this
function. It's hard to tell whether reversing the locking order helps.
Lee
_______________________________________________
evolution-hackers maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/evolution-hackers