invoke GObjectClass.constructed() only for newly constructed objects, and

Tue Apr  3 12:34:14 2007  Tim Janik  <timj@gtk.org>

        * gobject.[hc]: invoke GObjectClass.constructed() only for newly
        constructed objects, and invoke it while the notify queue is
        still being frozen, after all CONSTRUCT* properties have been
        set and before random other properties are being set.

        * applied modified patch from Ryan Lortie to implement
        GObjectClass.constructed() to fix #425324.

2007-04-02  Ryan Lortie  <desrt@desrt.ca>

        * gobject/gobject.h: Add 'constructed' vcall to GObjectClass.
        * gobject/gobject.c (g_object_newv): call ->constructed() as last
        step of object construction.



svn path=/trunk/; revision=5441
This commit is contained in:
Ryan Lortie
2007-04-03 10:44:30 +00:00
committed by Tim Janik
parent e3562e543a
commit dac885cba5
3 changed files with 28 additions and 4 deletions

View File

@@ -950,6 +950,10 @@ g_object_newv (GType object_type,
if (newly_constructed)
g_object_notify_queue_thaw (object, nqueue);
/* run 'constructed' handler if there is one */
if (newly_constructed && class->constructed)
class->constructed (object);
/* set remaining properties */
for (i = 0; i < n_oparams; i++)
object_set_property (object, oparams[i].pspec, oparams[i].value, nqueue);
@@ -958,6 +962,7 @@ g_object_newv (GType object_type,
/* release our own freeze count and handle notifications */
if (newly_constructed || n_oparams)
g_object_notify_queue_thaw (object, nqueue);
if (unref_class)
g_type_class_unref (unref_class);