From: Juerg Billeter Date: Sat, 19 Apr 2008 14:46:00 +0000 (+0000) Subject: don't mangle D-Bus signal names, fixes bug 528774 X-Git-Tag: VALA_0_3_1~34 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7c7a066ee61a1578d08fae6e88e6ea294b282fc9;p=platform%2Fupstream%2Fvala.git don't mangle D-Bus signal names, fixes bug 528774 2008-04-19 Juerg Billeter * vala/valasemanticanalyzer.vala, vala/valasignal.vala, gobject/valaccodeassignmentbinding.vala: don't mangle D-Bus signal names, fixes bug 528774 svn path=/trunk/; revision=1268 --- diff --git a/ChangeLog b/ChangeLog index 4f78569..937d842 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2008-04-19 Jürg Billeter + * vala/valasemanticanalyzer.vala, vala/valasignal.vala, + gobject/valaccodeassignmentbinding.vala: don't mangle D-Bus + signal names, fixes bug 528774 + +2008-04-19 Jürg Billeter + * vala/valasemanticanalyzer.vala, gobject/valaccodegenerator.vala: fix crash when trying to iterate over pointer types, fixes bug 528765 diff --git a/gobject/valaccodeassignmentbinding.vala b/gobject/valaccodeassignmentbinding.vala index ffa3e69..0a4e756 100644 --- a/gobject/valaccodeassignmentbinding.vala +++ b/gobject/valaccodeassignmentbinding.vala @@ -136,9 +136,13 @@ public class Vala.CCodeAssignmentBinding : CCodeExpressionBinding { ccall.add_argument (new CCodeIdentifier ("self")); } - if (!disconnect || sig is DBusSignal) { + if (sig is DBusSignal) { + // dbus_g_proxy_connect_signal or dbus_g_proxy_disconnect_signal + + // second argument: signal name + ccall.add_argument (new CCodeConstant ("\"%s\"".printf (sig.name))); + } else if (!disconnect) { // g_signal_connect_object or g_signal_connect - // or dbus_g_proxy_connect_signal or dbus_g_proxy_disconnect_signal // second argument: signal name ccall.add_argument (sig.get_canonical_cconstant ()); @@ -246,7 +250,7 @@ public class Vala.CCodeAssignmentBinding : CCodeExpressionBinding { } else { add_call.add_argument (new CCodeIdentifier ("self")); } - add_call.add_argument (sig.get_canonical_cconstant ()); + add_call.add_argument (new CCodeConstant ("\"%s\"".printf (sig.name))); first = true; foreach (FormalParameter param in m.get_parameters ()) { diff --git a/vala/valasemanticanalyzer.vala b/vala/valasemanticanalyzer.vala index 67d2289..be46ddb 100644 --- a/vala/valasemanticanalyzer.vala +++ b/vala/valasemanticanalyzer.vala @@ -2934,8 +2934,10 @@ public class Vala.SemanticAnalyzer : CodeVisitor { if (ma.symbol_reference is Signal) { var sig = (Signal) ma.symbol_reference; - - a.right.expected_type = new DelegateType (sig.get_delegate ()); + var deleg = sig.get_delegate (); + if (deleg != null) { + a.right.expected_type = new DelegateType (deleg); + } } else { a.right.expected_type = ma.static_type; } diff --git a/vala/valasignal.vala b/vala/valasignal.vala index de8d8f7..f97b06e 100644 --- a/vala/valasignal.vala +++ b/vala/valasignal.vala @@ -90,8 +90,9 @@ public class Vala.Signal : Member, Lockable { * * @return delegate */ - public Delegate get_delegate () { - if (generated_delegate == null) { + public Delegate? get_delegate () { + // parent_symbol is null for D-Bus signals + if (generated_delegate == null && parent_symbol != null) { generated_delegate = new Delegate (null, return_type); generated_delegate.instance = true;