diff options
author | Peter Williams <peterw@ximian.com> | 2001-08-29 02:28:14 +0800 |
---|---|---|
committer | Peter Williams <peterw@src.gnome.org> | 2001-08-29 02:28:14 +0800 |
commit | 61b4c7ffee31357507683b7b0e1d1dc0d1e0f58e (patch) | |
tree | 607e5870c26adb40579041c8062022771027c8e9 /camel | |
parent | 7acc488236b777678bc85179c9c2f7530528884f (diff) | |
download | gsoc2013-evolution-61b4c7ffee31357507683b7b0e1d1dc0d1e0f58e.tar.gz gsoc2013-evolution-61b4c7ffee31357507683b7b0e1d1dc0d1e0f58e.tar.zst gsoc2013-evolution-61b4c7ffee31357507683b7b0e1d1dc0d1e0f58e.zip |
Make the locking more fine-grained on destruction; specifically, don't
2001-08-28 Peter Williams <peterw@ximian.com>
* camel-object.c (camel_object_unref): Make the locking more
fine-grained on destruction; specifically, don't hold the
type lock while calling the finalize functions.
svn path=/trunk/; revision=12501
Diffstat (limited to 'camel')
-rw-r--r-- | camel/ChangeLog | 6 | ||||
-rw-r--r-- | camel/camel-object.c | 6 |
2 files changed, 12 insertions, 0 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog index 070ce611d5..8f87491d3d 100644 --- a/camel/ChangeLog +++ b/camel/ChangeLog @@ -1,3 +1,9 @@ +2001-08-28 Peter Williams <peterw@ximian.com> + + * camel-object.c (camel_object_unref): Make the locking more + fine-grained on destruction; specifically, don't hold the + type lock while calling the finalize functions. + 2001-08-27 Jeffrey Stedfast <fejj@ximian.com> * providers/local/camel-local-provider.c: Changed the diff --git a/camel/camel-object.c b/camel/camel-object.c index 703503b15b..ed8c255eaf 100644 --- a/camel/camel-object.c +++ b/camel/camel-object.c @@ -529,6 +529,10 @@ camel_object_unref (CamelObject * obj) GINT_TO_POINTER (iter->parent)); } + /* ok, done with the type stuff, and our data pointers + * won't go bad. */ + camel_type_lock_down (); + parents = g_slist_reverse (parents); head = parents; @@ -562,6 +566,8 @@ camel_object_unref (CamelObject * obj) /* Tuck away the pointer for use in a new object */ + camel_type_lock_up (); + type_info->free_instances = g_list_prepend (type_info->free_instances, obj); |