From 8febf0d579f67b16d347c8c91c69bd7afe3f4034 Mon Sep 17 00:00:00 2001 From: Jon Trowbridge Date: Tue, 4 Mar 2003 16:23:25 +0000 Subject: Unblock threads before invalidating our closures, since this might trigger 2003-03-04 Jon Trowbridge * pygobject.c (pygobject_dealloc): Unblock threads before invalidating our closures, since this might trigger a destructor that needs to execute python code. (pygobject_clear): Ditto. * pygboxed.c (pyg_boxed_dealloc): Unblock threads before freeing the boxed type, since the destructor may need to execute python code. (pyg_boxed_new): Block threads while we make our Py* calls. (pyg_pointer_new): Block threads while we make our Py* calls. * gobjectmodule.c (pyg_object_set_property): We need to block threads before our call to pygobject_new. (pyg_object_get_property): Ditto. --- gobject/gobjectmodule.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'gobject/gobjectmodule.c') diff --git a/gobject/gobjectmodule.c b/gobject/gobjectmodule.c index bd3b727..f9eb627 100644 --- a/gobject/gobjectmodule.c +++ b/gobject/gobjectmodule.c @@ -622,10 +622,14 @@ pyg_object_set_property (GObject *object, guint property_id, PyObject *object_wrapper, *retval; PyObject *py_pspec, *py_value; + pyg_block_threads(); + object_wrapper = pygobject_new(object); - g_return_if_fail(object_wrapper != NULL); - pyg_block_threads(); + if (object_wrapper == NULL) { + pyg_unblock_threads(); + g_return_if_fail(object_wrapper != NULL); + } py_pspec = pyg_param_spec_new(pspec); py_value = pyg_value_as_pyobject (value, TRUE); @@ -653,10 +657,14 @@ pyg_object_get_property (GObject *object, guint property_id, PyObject *object_wrapper, *retval; PyObject *py_pspec; + pyg_block_threads(); + object_wrapper = pygobject_new(object); - g_return_if_fail(object_wrapper != NULL); - pyg_block_threads(); + if (object_wrapper == NULL) { + pyg_unblock_threads(); + g_return_if_fail(object_wrapper != NULL); + } py_pspec = pyg_param_spec_new(pspec); retval = PyObject_CallMethod(object_wrapper, "do_get_property", -- cgit