From: Jürg Billeter Date: Tue, 9 Dec 2008 20:34:11 +0000 (+0000) Subject: Do not use g_signal_connect_object if the target object is not a GObject, X-Git-Tag: VALA_0_5_3~62 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e30ff6ec4e26c50df1aa5e8de7d961601d5649aa;p=thirdparty%2Fvala.git Do not use g_signal_connect_object if the target object is not a GObject, 2008-12-09 Jürg Billeter * gobject/valagsignalmodule.vala: Do not use g_signal_connect_object if the target object is not a GObject, fixes bug 539614 svn path=/trunk/; revision=2132 --- diff --git a/ChangeLog b/ChangeLog index 23a1fae08..313fd6371 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-12-09 Jürg Billeter + + * gobject/valagsignalmodule.vala: + + Do not use g_signal_connect_object if the target object is not a + GObject, fixes bug 539614 + 2008-12-09 Thijs Vermeir * vapi/packages/gdk-pixbuf-2.0/gdk-pixbuf-2.0.metadata: diff --git a/gobject/valagsignalmodule.vala b/gobject/valagsignalmodule.vala index 56ab561b1..c4fc54b85 100644 --- a/gobject/valagsignalmodule.vala +++ b/gobject/valagsignalmodule.vala @@ -435,6 +435,7 @@ public class Vala.GSignalModule : GObjectModule { var sig = (Signal) assignment.left.symbol_reference; var m = (Method) assignment.right.symbol_reference; + var target_type_symbol = m.parent_symbol as TypeSymbol; string connect_func; bool disconnect = false; @@ -443,8 +444,13 @@ public class Vala.GSignalModule : GObjectModule { if (sig is DynamicSignal) { connect_func = head.get_dynamic_signal_connect_wrapper_name ((DynamicSignal) sig); } else { - connect_func = "g_signal_connect_object"; - if (m.binding != MemberBinding.INSTANCE) { + if (m.binding == MemberBinding.INSTANCE) { + if (target_type_symbol != null && target_type_symbol.is_subtype_of (gobject_type)) { + connect_func = "g_signal_connect_object"; + } else { + connect_func = "g_signal_connect"; + } + } else { connect_func = "g_signal_connect"; } } @@ -553,7 +559,8 @@ public class Vala.GSignalModule : GObjectModule { } else if (assignment.right is LambdaExpression) { ccall.add_argument (new CCodeIdentifier ("self")); } - if (!disconnect && !(sig is DynamicSignal)) { + if (!disconnect && !(sig is DynamicSignal) + && target_type_symbol != null && target_type_symbol.is_subtype_of (gobject_type)) { // g_signal_connect_object // fifth argument: connect_flags