[glib/glib-2-36] gtype: interface-after-init exception for glibmm



commit 9982e183725efd798eb4374f4ae0dce2935adf2a
Author: Ryan Lortie <desrt desrt ca>
Date:   Thu Apr 4 09:31:11 2013 -0400

    gtype: interface-after-init exception for glibmm
    
    glibmm has a pretty difficult-to-solve problem caused by our recent
    change to deny addition of interfaces to classes after initialisation.
    
    They're looking for a long-term workaround for the problem, but in the
    meantime we can allow the registration to succeed (with warning) if the
    class looks like it's being defined by gtkmm.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=697229

 gobject/gtype.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)
---
diff --git a/gobject/gtype.c b/gobject/gtype.c
index a821442..1fd31e8 100644
--- a/gobject/gtype.c
+++ b/gobject/gtype.c
@@ -1006,7 +1006,10 @@ check_add_interface_L (GType instance_type,
     {
       g_warning ("attempting to add an interface (%s) to class (%s) after class_init",
                  NODE_NAME (iface), NODE_NAME (node));
-      return FALSE;
+
+      /* See https://bugzilla.gnome.org/show_bug.cgi?id=697229 */
+      if (!g_str_has_prefix (NODE_NAME (node), "gtkmm__CustomObject_"))
+        return FALSE;
     }
   tnode = lookup_type_node_I (NODE_PARENT_TYPE (iface));
   if (NODE_PARENT_TYPE (tnode) && !type_lookup_iface_entry_L (node, tnode))


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]