--- a/gflib/gflib/gf_type.c Tue Oct 27 01:23:10 2009 -0500
+++ b/gflib/gflib/gf_type.c Mon Nov 02 21:14:09 2009 -0600
@@ -91,16 +91,40 @@
gf_type_query_context_real_query_object(GfTypeQueryContext *ctx, GType type) {
GfTypeQueryContextPrivate *priv = GF_TYPE_QUERY_CONTEXT_GET_PRIVATE(ctx);
GObjectClass *klass = NULL;
+ GTypePlugin *plugin = NULL; + GTypeQuery *query = NULL; /* handle the passed in type */
klass = g_type_class_ref(type);
- g_type_query(type, &query);
+ /* work around for glib bug 600505, refer to that at some point to see if + * this can be cleaned up. + * https://bugzilla.gnome.org/show_bug.cgi?id=600505 + query = g_new0(GTypeQuery, 1); + plugin = g_type_get_plugin(type); + /* we don't use table, but it needs to be there to shutup a runtime + g_type_plugin_complete_type_info(plugin, type, &info, &table); + query->type_name = g_type_name(type); + query->class_size = info.class_size; + query->instance_size = info.instance_size; + g_type_query(type, query); if(priv->query->start_object)
- priv->query->start_object(ctx, &query, priv->data);
+ priv->query->start_object(ctx, query, priv->data); /* if the query doesn't have a function for params signals don't bother
* with digging through them.
@@ -116,7 +140,7 @@
if(priv->query->end_object)
- priv->query->end_object(ctx, &query, priv->data);
+ priv->query->end_object(ctx, query, priv->data); /* now dig through the children if we're recursive */
@@ -135,6 +159,8 @@
g_type_class_unref(klass);