summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Janik <timj@gtk.org>1998-11-16 06:05:37 +0000
committerTim Janik <timj@src.gnome.org>1998-11-16 06:05:37 +0000
commit3ae1549289877907e1767b8cbf30ab8b4b2ed9f2 (patch)
tree126fb70ec3138770d59d8e0af328cb93bba98512
parent3196b43aa24150caa563f80f2ee6d3adb90cb6f0 (diff)
downloadgdk-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--ChangeLog5
-rw-r--r--ChangeLog.pre-2-05
-rw-r--r--ChangeLog.pre-2-105
-rw-r--r--ChangeLog.pre-2-25
-rw-r--r--ChangeLog.pre-2-45
-rw-r--r--ChangeLog.pre-2-65
-rw-r--r--ChangeLog.pre-2-85
-rw-r--r--gtk/gtktypeutils.c35
8 files changed, 57 insertions, 13 deletions
diff --git a/ChangeLog b/ChangeLog
index 06ad4d2e1..e4ae81d7c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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)