diff options
author | Tim Janik <timj@gtk.org> | 1998-11-16 06:05:37 +0000 |
---|---|---|
committer | Tim Janik <timj@src.gnome.org> | 1998-11-16 06:05:37 +0000 |
commit | 3ae1549289877907e1767b8cbf30ab8b4b2ed9f2 (patch) | |
tree | 126fb70ec3138770d59d8e0af328cb93bba98512 | |
parent | 3196b43aa24150caa563f80f2ee6d3adb90cb6f0 (diff) | |
download | gdk-pixbuf-3ae1549289877907e1767b8cbf30ab8b4b2ed9f2.tar.gz |
relookup type node after class creation and parent class' object
Mon Nov 16 00:17:53 1998 Tim Janik <timj@gtk.org>
* gtk/gtktypeutils.c (gtk_type_new): relookup type node after
class creation and parent class' object initializer.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | ChangeLog.pre-2-0 | 5 | ||||
-rw-r--r-- | ChangeLog.pre-2-10 | 5 | ||||
-rw-r--r-- | ChangeLog.pre-2-2 | 5 | ||||
-rw-r--r-- | ChangeLog.pre-2-4 | 5 | ||||
-rw-r--r-- | ChangeLog.pre-2-6 | 5 | ||||
-rw-r--r-- | ChangeLog.pre-2-8 | 5 | ||||
-rw-r--r-- | gtk/gtktypeutils.c | 35 |
8 files changed, 57 insertions, 13 deletions
@@ -1,3 +1,8 @@ +Mon Nov 16 00:17:53 1998 Tim Janik <timj@gtk.org> + + * gtk/gtktypeutils.c (gtk_type_new): relookup type node after + class creation and parent class' object initializer. + 1998-11-13 Federico Mena Quintero <federico@nuclecu.unam.mx> * gtk/gtkpaned.c (gtk_paned_realize): Destroy the cursor after we diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index 06ad4d2e1..e4ae81d7c 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,8 @@ +Mon Nov 16 00:17:53 1998 Tim Janik <timj@gtk.org> + + * gtk/gtktypeutils.c (gtk_type_new): relookup type node after + class creation and parent class' object initializer. + 1998-11-13 Federico Mena Quintero <federico@nuclecu.unam.mx> * gtk/gtkpaned.c (gtk_paned_realize): Destroy the cursor after we diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 06ad4d2e1..e4ae81d7c 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,8 @@ +Mon Nov 16 00:17:53 1998 Tim Janik <timj@gtk.org> + + * gtk/gtktypeutils.c (gtk_type_new): relookup type node after + class creation and parent class' object initializer. + 1998-11-13 Federico Mena Quintero <federico@nuclecu.unam.mx> * gtk/gtkpaned.c (gtk_paned_realize): Destroy the cursor after we diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 06ad4d2e1..e4ae81d7c 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,8 @@ +Mon Nov 16 00:17:53 1998 Tim Janik <timj@gtk.org> + + * gtk/gtktypeutils.c (gtk_type_new): relookup type node after + class creation and parent class' object initializer. + 1998-11-13 Federico Mena Quintero <federico@nuclecu.unam.mx> * gtk/gtkpaned.c (gtk_paned_realize): Destroy the cursor after we diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 06ad4d2e1..e4ae81d7c 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,8 @@ +Mon Nov 16 00:17:53 1998 Tim Janik <timj@gtk.org> + + * gtk/gtktypeutils.c (gtk_type_new): relookup type node after + class creation and parent class' object initializer. + 1998-11-13 Federico Mena Quintero <federico@nuclecu.unam.mx> * gtk/gtkpaned.c (gtk_paned_realize): Destroy the cursor after we diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 06ad4d2e1..e4ae81d7c 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,8 @@ +Mon Nov 16 00:17:53 1998 Tim Janik <timj@gtk.org> + + * gtk/gtktypeutils.c (gtk_type_new): relookup type node after + class creation and parent class' object initializer. + 1998-11-13 Federico Mena Quintero <federico@nuclecu.unam.mx> * gtk/gtkpaned.c (gtk_paned_realize): Destroy the cursor after we diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 06ad4d2e1..e4ae81d7c 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,8 @@ +Mon Nov 16 00:17:53 1998 Tim Janik <timj@gtk.org> + + * gtk/gtktypeutils.c (gtk_type_new): relookup type node after + class creation and parent class' object initializer. + 1998-11-13 Federico Mena Quintero <federico@nuclecu.unam.mx> * gtk/gtkpaned.c (gtk_paned_realize): Destroy the cursor after we diff --git a/gtk/gtktypeutils.c b/gtk/gtktypeutils.c index 49074bc8e..165a8d08c 100644 --- a/gtk/gtktypeutils.c +++ b/gtk/gtktypeutils.c @@ -331,19 +331,20 @@ gtk_type_new (GtkType type) GtkTypeNode *node; GtkTypeObject *tobject; gpointer klass; - guint i; LOOKUP_TYPE_NODE (node, type); g_return_val_if_fail (node != NULL, NULL); - klass = gtk_type_class (type); + klass = node->klass; + if (!klass) + { + klass = gtk_type_class (type); + LOOKUP_TYPE_NODE (node, type); + } node->chunk_alloc_locked = TRUE; if (node->mem_chunk) - { - tobject = g_mem_chunk_alloc (node->mem_chunk); - memset (tobject, 0, node->type_info.object_size); - } + tobject = g_mem_chunk_alloc0 (node->mem_chunk); else tobject = g_malloc0 (node->type_info.object_size); @@ -352,16 +353,24 @@ gtk_type_new (GtkType type) * corresponding base class, otherwise overridden class functions * could get called with partly-initialized objects. */ - for (i = node->n_supers; i > 0; i--) + if (node->n_supers) { - GtkTypeNode *pnode; - - LOOKUP_TYPE_NODE (pnode, node->supers[i]); - if (pnode->type_info.object_init_func) + guint i; + GtkType *supers; + + supers = node->supers; + for (i = node->n_supers; i > 0; i--) { - tobject->klass = pnode->klass; - pnode->type_info.object_init_func (tobject); + GtkTypeNode *pnode; + + LOOKUP_TYPE_NODE (pnode, supers[i]); + if (pnode->type_info.object_init_func) + { + tobject->klass = pnode->klass; + pnode->type_info.object_init_func (tobject); + } } + LOOKUP_TYPE_NODE (node, type); } tobject->klass = klass; if (node->type_info.object_init_func) |