diff options
| author | Gustavo J. A. M. Carneiro <gjc@src.gnome.org> | 2006-08-27 10:53:54 +0000 |
|---|---|---|
| committer | Gustavo J. A. M. Carneiro <gjc@src.gnome.org> | 2006-08-27 10:53:54 +0000 |
| commit | 3938273dfd085dc75f64ce44706cf508fd971099 (patch) | |
| tree | ef7a60014be7ec25578d1f8582967cfd7712951e /gobject/gobjectmodule.c | |
| parent | 6c0b030393f51f1ca65708cc6620e0f2456b8779 (diff) | |
| download | pygobject-3938273dfd085dc75f64ce44706cf508fd971099.tar.gz pygobject-3938273dfd085dc75f64ce44706cf508fd971099.tar.xz pygobject-3938273dfd085dc75f64ce44706cf508fd971099.zip | |
Bug 353039 – Failure in signal emission during do_set_property invoked from constructor
Diffstat (limited to 'gobject/gobjectmodule.c')
| -rw-r--r-- | gobject/gobjectmodule.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/gobject/gobjectmodule.c b/gobject/gobjectmodule.c index dabff01..dde48b6 100644 --- a/gobject/gobjectmodule.c +++ b/gobject/gobjectmodule.c @@ -1173,8 +1173,9 @@ pygobject__g_instance_init(GTypeInstance *instance, wrapper = g_object_get_qdata(object, pygobject_wrapper_key); if (wrapper == NULL) { wrapper = pygobject_init_wrapper_get(); - if (wrapper) { - g_object_set_qdata(object, pygobject_wrapper_key, wrapper); + if (wrapper && ((PyGObject *) wrapper)->obj == NULL) { + ((PyGObject *) wrapper)->obj = object; + pygobject_register_wrapper(wrapper); } } pygobject_init_wrapper_set(NULL); @@ -3070,11 +3071,16 @@ pygobject_constructv(PyGObject *self, GParameter *parameters) { if (self->obj == NULL) { + GObject *obj; pygobject_init_wrapper_set((PyObject *) self); - self->obj = g_object_newv(pyg_type_from_object((PyObject *) self), - n_parameters, parameters); + obj = g_object_newv(pyg_type_from_object((PyObject *) self), + n_parameters, parameters); pygobject_init_wrapper_set(NULL); - pygobject_register_wrapper((PyObject *) self); + if (self->obj == NULL) { + self->obj = obj; + pygobject_sink(obj); + pygobject_register_wrapper((PyObject *) self); + } } else { int i; for (i = 0; i < n_parameters; ++i) |
